所以我搜索了很多关于如何更改文件中的特定行的信息,所以我找到了删除行的代码。我设法编辑代码,它改变了确切的行,但是当我想改变其他行后,前一个单词重置,我不知道为什么。
这是我找到的代码:
using (StreamReader reader = new StreamReader("C:\\input")) {
using (StreamWriter writer = new StreamWriter("C:\\output")) {
while ((line = reader.ReadLine()) != null) {
if (String.Compare(line, line_to_delete) == 0)
continue;
writer.WriteLine(line);
}
}
}
这是我编辑过的代码:
public void ChangeLineInFile(string file, string file2, string linetochange, string changedline) {
string line = null;
using (StreamReader reader = new StreamReader(file)) {
using (StreamWriter writer = new StreamWriter(file2)) {
while ((line = reader.ReadLine()) != null) {
if (String.Equals(line, linetochange)) {
writer.WriteLine(string.Format("{0}", changedline));
} else {
writer.WriteLine(line);
}
}
}
}
File.Delete(file);
File.Move(file2, file);
File.Delete(file2);
}
答案 0 :(得分:0)
在我看来,您的代码执行以下操作
file1->editA->file2
然后再次运行它。你有没有在开始之前将file2复制回file1,或者你刚刚做了
file1->editB->file2
第一次传递后,file1仍然包含原始数据。因此,当您完成该功能时,您需要将输出文件复制到输入文件中。
答案 1 :(得分:0)
正如我刚才在评论中所解释的那样。
您可能在项目的Visual Studio中包含了源文件,即要更改的文件。
这就是说,如果要在构建期间将文件包含为输出,或者它们是否应覆盖现有文件,则可以指定方法。单击解决方案资源管理器中的文件,然后转到属性(键盘上的F4快捷方式)。必须考虑Build Action
和Copy to Output Directory
。