2012-08-23 81 views
0

我正尝试读取隔离存储中创建的目录中的书写文件。该文件实际上正在创建。但是当读取它,它有一个例外,“不允许操作上IsolatedStorageFileStream。” ......从隔离存储中创建的目录中读取文件

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (!storage.DirectoryExists("CourseworkDirectory")) 
     storage.CreateDirectory("CourseworkDirectory"); 

    XElement Coursework = new XElement(CourseworkID); 
    XDocument _doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), Coursework); 
    IsolatedStorageFileStream location = new IsolatedStorageFileStream("CourseworkDirectory\\"+CourseworkID, System.IO.FileMode.Create, storage); 
    StreamWriter file = new StreamWriter(location); 

    _doc.Save(file);//saving the XML document as the file 
    file.Close(); 
    file.Dispose();//disposing the file 
    location.Dispose(); 
} 

读取文件....

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    string searchpath = System.IO.Path.Combine("CourseworkDirectory", "*.*"); 

    foreach (string filename in storage.GetFileNames(searchpath)) 
    { 
     XElement _xml; 
     IsolatedStorageFileStream location = new IsolatedStorageFileStream(filename, System.IO.FileMode.Open, storage); 

它实际上得到的文件名但此时有一个例外。

+1

没有尝试storage.OpenFile(文件名,FileMode.Open,FileAccess.Read) –

+0

是的,我没有...它实际看到的文件名,但它给出了同样的问题 – user1619553

+0

问题是我创建的目录...当我尝试使用IsolatedStorageFile时,它工作得非常好。 – user1619553

回答

0

你可以这样做实现这一---

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    IsolatedStorageFileStream fileStream = storage.OpenFile(app.getSettingsPath,FileMode.Open, FileAccess.Read); 
    using (StreamReader reader = new StreamReader(fileStream)) 
    { 
     string line; 
     while((line = reader.ReadLine()) != null) 
     { 
     // do your work here 
     } 
    } 
} 
0

试试这个,它为我工作:希望它为你工作太

 String sb; 

     using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (myIsolatedStorage.FileExists(fileName)) 
      { 
       StreamReader reader = new StreamReader(new IsolatedStorageFileStream(fileName, FileMode.Open, myIsolatedStorage)); 

       sb = reader.ReadToEnd(); 

       reader.Close(); 
      } 

      if(!String.IsNullOrEmpty(sb)) 
      { 
       MessageBox.Show(sb); 
      } 
     } 

如果这不起作用,那么也许你的文件不存在。

+0

嗨Milani我尝试这个和适用于我,但我有一个问题,如果我想采取的XML文件内使用'var xml = XDocument.Load(“路径”)。ToString();''我知道方法“加载”需要流作为参数,但我不知道如何使用,如果你能帮助我! –