2011-04-26 134 views
0

我试图将数组中的所有数据转换为文本文件,以便逐个读取所有项并将其保存到独立存储中并在另一个存储中显示出来页面列表框。将数组转换为文本文件并存储到独立存储中

我试过这个,但我遇到错误,指出“操作不允许IsolatedStorageFileStream”。我需要帮助,请尽快回到我身边。谢谢!

//save list to favourite list 
    private void addListBtn_Click(object sender, RoutedEventArgs e) 
    { 

     ///////for-loop to access userDrinksList 
     //////transform array into textfile, one line for each drink 
     ///////write in quantity of file into isolated storage using write line function 

     for (int i = 0; i < (Application.Current as App).userDrinksList.Count; i++) 
     { 

      //Obtain the virtual store for application 
      IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication(); 

      //Create a new folder and call it "ListFolder" 
      storage.CreateDirectory("ListFolder"); 


      //Create a new file and assign a StreamWriter to the store and this new file (myFile.txt) 
      //Also take the text contents from the txtWrite control and write it to myFile.txt 
      // StreamReader readFile = null; 
      StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.OpenOrCreate, storage)); 
      StreamReader readFile = new StreamReader(new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.Open, storage)); 

      string myFile = readFile.ReadToEnd(); 
      string[] lines = myFile.Split(System.Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 

      //write content inside myFile.txt 
      writeFile.WriteLine(myFile); 

      //retrieveDrinksListBox.Items.AddRange(lines); 
      //writeFile.Close(); 
     } 
+0

这与您最后一个问题有什么不同? http://stackoverflow.com/questions/5740729/how-to-transform-array-into-textfile – 2011-04-26 08:31:36

回答

0

你看到被抛出当您尝试从您刚刚打开的书面文件中读取的例外:

StreamReader readFile = new StreamReader(new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.Open, storage));

问题还在于,当您阅读完文件后,您永远不会关闭该文件(尽管代码中没有足够的空间来解决该问题)。你拥有的所有代码都很好,你只需要对它进行重新排序。尝试

StreamReader readFile = new StreamReader(new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.Open, storage)); 

      string myFile = readFile.ReadToEnd(); 
      readFile.Close(); 

      //Create a new file and assign a StreamWriter to the store and this new file (myFile.txt) 
      //Also take the text contents from the txtWrite control and write it to myFile.txt 
      // StreamReader readFile = null; 
      StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.OpenOrCreate, storage)); 

      string[] lines = myFile.Split(System.Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 

      //write content inside myFile.txt 
      writeFile.WriteLine(myFile); 

      //retrieveDrinksListBox.Items.AddRange(lines); 
      writeFile.Close(); 
0

您能否提供关于抛出异常的更多信息?通过阅读你的代码,它看起来像你试图追加到文件。在创建StreamWriter期间,只需将FileMode设置为Append即可消除StreamReader。请看下图:

StreamWriter writeFile = new StreamWriter(
    new IsolatedStorageFileStream("ListFolder\\myFile.txt", FileMode.Append, storage)); 

FileMode.Append要么追加到该文件,如果它存在,或创建一个新的文件。

此外,我不确定是否打算将行writeFile.WriteLine(myFile)写入myFile而不是存储在lines变量(您的数据)中的内容。

+0

不,我不想追加到文件。 相反,我想要创建一个for-loop来访问存储在我的数组中的数据,并将该数组内的数据转换为文本文件。这样我就可以使用'string myFile = readFile.ReadToEnd();'方法来读取存储在数组内部的所有数据,并将其保存在独立的存储中。之后,我可以在另一页的列表框中逐行检索数据。 – user714705 2011-04-27 01:04:42

+0

我想要做的是使用for循环访问数组中的数据,创建一个独立的存储来存储所有数据(将数组数据转换为文本文件)并使用StreamReader读取所有文本文件数据逐行。我必须再次将正在读取的文本文件保存在隔离的存储文件中,以便在另一个页面上进行检索。 – user714705 2011-04-27 01:05:27