Silverlight 4.0 计算独立存储中文件的大小

Silverlight 4.0 计算独立存储中文件的大小,silverlight-4.0,isolatedstorage,Silverlight 4.0,Isolatedstorage,除了打开文件流并调用“Length”属性外,我似乎找不到一种方法来确定独立存储中文件的大小。有没有更有效的方法 谢谢我找到了一点技巧让它工作起来。您需要做的是使用反射获取所需文件的完全限定文件路径,然后创建一个新的文件信息对象: //This is the private field name used for reflection private const string IsolatedStoreRootDir = "m_RootDir"; //This method takes a fi

除了打开文件流并调用“Length”属性外,我似乎找不到一种方法来确定独立存储中文件的大小。有没有更有效的方法


谢谢

我找到了一点技巧让它工作起来。您需要做的是使用反射获取所需文件的完全限定文件路径,然后创建一个新的文件信息对象:

//This is the private field name used for reflection
private const string IsolatedStoreRootDir = "m_RootDir";

//This method takes a file path relative to isolated storage
//and the current store
private static FileInfo GetFileInfo(string path, IsolatedStorageFile store)
{
    return new FileInfo(GetFullyQualifiedFileName(path, store));
}

//This gets the fully qualified path of the root isolated storage directory
//then appends the relative path to it.
private static string GetFullyQualifiedFileName(string path, IsolatedStorageFile store)
{
    return Path.Combine(store.GetType()
      .GetField(IsolatedStorageFileSystem.IsolatedStoreRootDir, 
      System.Reflection.BindingFlags.NonPublic |
      System.Reflection.BindingFlags.Instance).GetValue(store).ToString(), path);
}

//Here's how it's used
static void Main(string[] args)
{
    var store = IsolatedStorageFile.GetUserStoreForAssembly();

    var length = GetFileInfo("TestFile.txt", store).Length;
}

您是否在受限权限环境中进行过测试?我认为,当独立存储是您唯一的特权时,这将不起作用。
long Size = 0L;
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filePath, FileMode.Open, FileAccess.Read, isoFile))
{
  Size = stream.Length;
}