在文本文件中预置信息

本文关键字:信息 文本 文件 | 更新日期: 2023-09-27 18:36:12

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

在文本文件中预置信息

你的第一个问题是你正在写入的文件与你正在读取的文件不同。

您的第二个问题是您没有像您想要的那样逐行读取文件。

你想要:

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')));

阅读所有行,然后用填充将它们写回去。

不确定,但为什么不:

File.WriteAllLines("myFile.txt", 
    File.ReadLines("myFile.txt").Select(s => s.PadLeft(31, '0')).ToArray());

只是一个想法。

如果你想一次做一行,你需要阅读各个行。

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

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