首页 > 解决方案 > 如何在 Android 和 IOS 上创建目录?

问题描述

我创建了一个 Xamarin 应用程序,我想序列化一些数据。Android 的 FileWorker 类:

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);
    }
}

并添加方法:

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,如果可能出现相同的异常)上创建此目录?

标签: c#filexamarinxamarin.androidxamarin.ios

解决方案


您可以使用普通的 C# System.IO 方法

using System.IO;

DirectoryInfo di = Directory.CreateDirectory(path);

推荐阅读