Как создать каталог на Android и IOS? - PullRequest
0 голосов
/ 26 октября 2019

Я создаю приложение Xamarin и хочу сериализовать некоторые данные. Класс FileWorker для Android:

public class FileWorker : IFileWorker
{
    public Task<IEnumerable<string>> GetFilesAsync(string folder)
    {
        IEnumerable<string> filenames = from filepath in Directory.EnumerateFiles(GetDocsPath() + "/" + folder)
                                        select Path.GetFileName(filepath);
        return Task<IEnumerable<string>>.FromResult(filenames);
    }

    string GetFilePath(string filename)
    {
        return Path.Combine(GetDocsPath(), filename);
    }

    string GetDocsPath()
    {
        return System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
    }

    public Task SerializeAsync<T>(string filename, T obj)
    {
        string filepath = GetFilePath(filename);
        DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
        FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate);
        formatter.WriteObject(fs, obj);
        return Task.FromResult(true);
    }

    public Task<T> DeserializeAsync<T>(string filename)
    {
        DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
        T obj;
        FileStream fs = new FileStream(filename, FileMode.OpenOrCreate);
        obj = (T)formatter.ReadObject(fs);
        return Task.FromResult(obj);
    }
}

и метод Add:

public async void AddObjectAsync(object obj)
{
    var fv = DependencyService.Get<IFileWorker>();
    string path = AppSettings.ObjectsFolder + "/";
    try
    {
        await fv.SerializeAsync(path + "obj", obj);
    }
    catch (Exception e) { }
}

Но я улавливаю исключение в этой функции:

System.IO.DirectoryNotFoundException

Как создать этот каталог на Android (и IOS, если возможно такое же исключение)?

1 Ответ

1 голос
/ 26 октября 2019

вы можете использовать обычные методы C # System.IO

using System.IO;

DirectoryInfo di = Directory.CreateDirectory(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...