在文本文件中预先添加信息

时间:2015-01-05 18:07:29

标签: c#

我尝试使用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();
}

3 个答案:

答案 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"))

将打开当前工作目录中的文件 - 可能是包含可执行文件的目录。