我想编写一个外部应用程序可以读取的文件,但我还想要一些 IsolatedStorage 的优势,基本上可以防止意外异常。我可以拥有吗?
问问题
24736 次
3 回答
27
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();
我不确定这是推荐的做法。
请记住,磁盘上的位置取决于操作系统的版本,并且您需要确保您的其他应用程序具有访问该位置的权限。
于 2009-07-11T02:33:04.627 回答
9
您可以直接从商店获取路径,而不是创建临时文件并获取位置:
var path = store.GetType().GetField("m_RootDir", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(store).ToString();
于 2012-03-24T02:29:36.533 回答
9
我使用 FileStream 的 Name 属性。
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 中测试。
于 2012-11-07T16:33:06.983 回答