我有一个json文件,我应该读/写它。首先,我试图从资产中读取,但这样我就无法在运行时写入。然后我这样做了:
string path = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
string fileName = Path.Combine(path.ToString(), "myFile.json");
if(File.Exist(fileName)){
//do something
} else {
File.Create(fileName);
Path.GetDirectoryName(fileName); //This returns "/storage/sdcard0"
}
但是我应该把我的json文件放在哪里?在" / storage / sdcard0"?它在哪里?
答案 0 :(得分:1)
最佳解决方案是将myFile.json
文件捆绑到资源中,并在应用首次启动时将其复制到可写位置:
以下代码为您提供了一个帮助程序类:
public class FileAccessHelper
{
public static string GetLocalFilePath(string filename)
{
string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string o= Path.Combine(path, filename);
return o;
}
public static void CopyAssetFile(string path, string fileName)
{
using (var br = new BinaryReader(Application.Context.Assets.Open(fileName)))
{
using (var bw = new BinaryWriter(new FileStream(path, FileMode.Create)))
{
byte[] buffer = new byte[2048];
int length = 0;
while ((length = br.Read(buffer, 0, buffer.Length)) > 0)
{
bw.Write(buffer, 0, length);
}
}
}
}
}
所以在主要活动中你可以像这样使用它:
var path = FileAccessHelper.GetLocalFilePath("myFile.json");
if (File.Exists(path))
{
CopyDatabase(path, myFile.json);
}
答案 1 :(得分:0)
您可以设置断点并检查路径变量的值吗? 通过这种方式,您可以获得保存json文件的实际路径。