我在哪里可以放入我的json文件

时间:2016-07-18 12:36:04

标签: c# android xamarin

我有一个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"?它在哪里?

2 个答案:

答案 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文件的实际路径。