c# - 如何在 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# System.IO 方法
using System.IO;
DirectoryInfo di = Directory.CreateDirectory(path);
推荐阅读
- amazon-web-services - CDK ClientVpnEndpoint。想了解获取创建的 VpnEndpoint 的 DnsName
- javascript - 正则表达式用多个字符替换匹配模式的字符串
- python - 如何找到熊猫系列中最长的列表?
- python - 用于 Python3 请求扩展的 TLS 适配器
- c - 从C中的HDF5文件确定固定长度字符串属性的长度
- c - 使用函数 sscanf 解析逗号分隔值的问题
- python - 无法使用 Selenium 和 Python 更改角度元素文本/值
- libgit2sharp - 从远程删除分支
- r - 为什么我的 R 在文件存在时无法打开它
- mariadb - 使用联合并将列放入变量时出错