使用.NET在文件中间添加一行

Bra*_*don 11 .net c# streamwriter streamreader

你好我正在做一些事情,我需要能够将文本添加到.txt文件中.虽然我已经完成了这个我有一个小问题.我需要或多或少地在文件中间写字符串.例:

Hello my name is Brandon,
I hope someone can help, //I want the string under this line.
Thank you.
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮助解决方案.

编辑好吧谢谢你们,我会试着想出来,可能只是重写整个文件.好吧,我正在制作的程序与hosts文件有关,并不是每个人都有相同的hosts文件,所以我想知道是否有办法读取他们的hosts文件,并复制所有文件,同时将字符串添加到它?

LBu*_*kin 13

对于常规文件,没有办法绕过它 - 您必须读取您希望在其后添加的行后面的文本,覆盖该文件,然后附加原始尾随文本.

将磁盘上的文件视为数组 - 如果要将某些项插入数组的中间,则需要将所有以下项目向下移动以腾出空间.不同之处在于.NET为数组提供了便利方法,Lists这使得这很容易实现.据我所知,文件I/O API没有提供这样的便利方法.

如果您事先知道需要在文件中间插入,则通常更容易编写包含更改内容的新文件,然后执行重命名.如果文件足够小以读入内存,您可以使用一些LINQ轻松完成此操作:

var allLines = File.ReadAllLines( filename ).ToList();
allLines.Insert( insertPos, "This is a new line..." );
File.WriteAllLines( filename, allLines.ToArray() );
Run Code Online (Sandbox Code Playgroud)


小智 5

这是在文本文件中间插入文本的最佳方法.

 string[] full_file = File.ReadAllLines("test.txt");
 List<string> l = new List<string>();
 l.AddRange(full_file);
 l.Insert(20, "Inserted String"); 
 File.WriteAllLines("test.txt", l.ToArray());
Run Code Online (Sandbox Code Playgroud)