2011-04-26 131 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