2011-03-09 72 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