我可以得到一个路径的IsolatedStorage文件,并从外部应用程序读取它?(Can I get

2019-06-25 15:13发布

我想写一个文件,其中外部应用程序可以读取它,但我也想了一些IsolatedStorage优势,基本上在发生意外的异常保险。 我可以拥有它?

Answer 1:

您可以通过访问的私有字段检索磁盘的独立存储文件的路径IsolatedStorageFileStream类,使用反射。 下面是一个例子:


// Create a file in isolated storage.
IsolatedStorageFile store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("test.txt", FileMode.Create, store);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine("Hello");
writer.Close();
stream.Close();

// Retrieve the actual path of the file using reflection.
string path = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString();

我不知道这是一个推荐的做法虽然。

请记住,磁盘上的位置取决于操作系统的版本,你需要确保你的其他应用程序已访问该位置的权限。



Answer 2:

我使用的FileStream的名称属性。

private static string GetAbsolutePath(string filename)
{
    IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

    string absoulutePath = null;

    if (isoStore.FileExists(filename))
    {
        IsolatedStorageFileStream output = new IsolatedStorageFileStream(filename, FileMode.Open, isoStore);
        absoulutePath = output.Name;

        output.Close();
        output = null;
    }

    return absoulutePath;
}

该代码在Windows Phone 8的SDK测试。



Answer 3:

而不是创建一个临时文件并获得位置的,你可以得到直接从存储的路径:

var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();


文章来源: Can I get a path for a IsolatedStorage file and read it from external applications?