2011-03-09 89 views
2

是否有辦法刪除隔離存儲中的文件中的特定行,例如,我在文件中保存了幾行字符串,這是在隔離存儲中,而且我想刪除我在列表框中選擇的特定字符串(從列表框中的單獨存儲讀取字符串行)。 這裏是寫代碼:從隔離存儲中的文件中刪除特定項目

StreamWriter writeFile; 
      if (!store.DirectoryExists("SaveFolder")) 
      { 
       store.CreateDirectory("SaveFolder"); 
       writeFile = new StreamWriter(new IsolatedStorageFileStream("SaveFolder\\SavedFile.txt", FileMode.CreateNew, store)); 
      } 
      else 
      { 
       writeFile = new StreamWriter(new IsolatedStorageFileStream("SaveFolder\\SavedFile.txt", FileMode.Append, store)); 
      } 
      StringWriter str = new StringWriter(); 
      str.Write(urlHolder.Text); 
      writeFile.WriteLine(str.ToString()); 
      writeFile.Close(); 


      urlHolder.Text = string.Empty; 

,這裏是閱讀代碼:

IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 

      StreamReader readFile = null; 
      try 
      { 
       readFile = new StreamReader(new IsolatedStorageFileStream("SaveFolder\\SavedFile.txt", FileMode.Open, store)); 
       string fileText = readFile.ReadLine(); 

       while (fileText==readFile.ReadLine()) 
       { 
        bookmarkListBox.Items.Add(fileText); 
       } 

       readFile.Close(); 
      } 

      catch 
      { 
       MessageBox.Show("Need to create directory and the file first."); 
      } 

我找不到任何地方一無所知去除是在獨立存儲特定文件的東西,所以如果有人知道的東西,請回復,謝謝!

回答

2

最好的方法是一次向文件寫入一行並跳過你想要刪除的內容。如果您的文件已經在SD卡上,請寫入其他文件,刪除原件並將其替換爲新版本。

您已完成大部分代碼。只需向文件寫入一行,然後跳過不想保存的項目。

writeFile.WriteLine(line); 
+0

我認爲你不明白我想做什麼..我會盡力解釋更精確。所以我在那個文件中有那些字符串,我希望他們在那裏,但是我也希望能夠刪除其中的一個,如果我想要的話,我當然會選擇。謝謝你的快速答覆,雖然... – cvele 2011-03-09 22:23:07

2

這裏沒有任何內置的功能來處理IsolatedStorage中的文件內容。處理文件內容的責任由開發人員承擔。

最簡單的方法是讀取原始文件的全部內容,在內存中更新它,然後重寫整個文件,使用FileMode File.Create來覆蓋現有文件。 (這將避免任何問題,以較小的內容被寫入較大的早期內容。)

+0

是的,我也這麼認爲,好吧,我會嘗試...但如何「告訴」該文件什麼字符串需要被替換,如果你明白我..?謝謝... – cvele 2011-03-09 22:26:07

+0

@ user648539如果你知道要刪除的字符串,你可以得到整個文件的內容,然後只需調用'.Replace()',將字符串作爲第一個和String.Empty傳遞給第二個參數。 – 2011-03-09 22:36:46

+0

好的,我會嘗試,謝謝! – cvele 2011-03-10 01:00:37