我尝试使用StreamWriter访问简单的文本文件。我需要它来检查文本文件中的每一行,并在行的开头添加零,直到该行等于31的长度。 我的代码编译正确,但在执行后它对相关的实际文件没有任何作用。我做错了什么?
StreamReader Editor = new StreamReader(@"C:\\Users\\User\\Desktop\\New folder\\DHStest.txt", true);
string reader = Editor.ReadToEnd();
using (StreamWriter Writer = new StreamWriter("DHStest.txt"))
{
string output = reader.PadLeft(31, '0');
Writer.Write(output);
Writer.Close();
}
答案 0 :(得分:0)
不确定,但为什么不呢:
File.WriteAllLines("myFile.txt",
File.ReadLines("myFile.txt").Select(s => s.PadLeft(31, '0')).ToArray());
只是一个想法。
答案 1 :(得分:0)
你的第一个问题是你写的是另一个文件,而不是你正在阅读。
你的第二个问题是你没有按照你想要的那样逐行阅读文件。
你想:
var path = @"C:\Users\User\Desktop\New folder\DHStest.txt";
var lines = File.ReadAllLines(path);
File.WriteAllLines(path, lines.Select(x => x.PadLeft(31, '0')));
读取所有行,然后用填充写回来。
答案 2 :(得分:0)
如果你想一次做一行,你需要阅读各行。
var lines = File.ReadAllLines(fileName);
using (var writer = new StreamWriter(fileName))
{
foreach (var line in lines)
{
writer.WriteLine(line.PadLeft(31, '0'));
}
}
您没有看到修改后的文件的原因是您没有使用完整路径打开它。也就是说,你有:
using (StreamWriter Writer = new StreamWriter("DHStest.txt"))
将打开当前工作目录中的文件 - 可能是包含可执行文件的目录。