如何遍历整个文本文件?

时间:2015-10-04 19:32:10

标签: c# loops foreach

我需要你的帮助!我正在编写一个脚本,从一个文本文件中获取字符串,该文件从文本文件中获取20个字符的值。

现在我想在文本文件中抓取的字符前面添加空格。但是,我想将它应用于整个文本文件。

例如:

文字1 A(输入):

01253654758965475896N12345
012536547589654758960011223325

(输出):

(added 10 spaces in front)01253654758965475896   N12345
(added 10 spaces in front)01253654758965475896   0011223325

想法是循环使用它们,我在前面添加了10个空格,然后在01253654758965475896之后添加了空格。

这是我的代码:

class Program
    {
        [STAThread]
        static void Main(string[] args)
        {

            int acc = 1;
            string calcted = (acc++).ToString().PadLeft(20, '0');
            string ft_space = new string(' ', 12);

            string path = Console.ReadLine();
            using (StreamReader sr = File.OpenText(path))
            {
                string s = "";
                while ((s = sr.ReadToEnd()) != null)
                {

                        string px = s;
                        string cnd = s.Substring(0, 16);
                        string cdr = cnd;

                        px = ft_space + cdr;

                        Console.Write("Enter Location:");
                        string pt1 = Console.ReadLine();
                        if (!File.Exists(pt1))
                        {

                            using (TextWriter sw = File.CreateText(pt1))
                            {
                                sw.Write(px);
                            }

                        }
                    } Console.ReadKey();


            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

如评论中所述,首先将ReadToEnd更改为ReadLine

ReadToEnd将读取所有文件,ReadLine将在每次循环迭代时读取一行。

然后,由于您需要20个字符而不是16个字符,因此需要将s.Substring(0, 16)更改为s.Substring(0, 20)

之后你需要获得该行的其余部分,因此这将是s.Substring(20)

然后您需要将所有部分连接在一起,如下所示:

string result = spaces10 + first_part + spaces3 + second_part;

另一个问题是你只需要编写第一行,因为每次在循环中检查文件是否存在,如果文件存在,则不写行。

以下是您的代码将如何处理此类更改(以及其他更改):

string spaces10 = new string(' ', 10);

string spaces3 = new string(' ', 3);

string input_file = Console.ReadLine();
Console.Write("Enter Location:");
string output_file = Console.ReadLine();

using (StreamReader sr = File.OpenText(input_file))
{
    using (TextWriter sw = File.CreateText(output_file))
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            string first_part = line.Substring(0, 20);

            string second_part = line.Substring(20);

            string result = spaces10 + first_part + spaces3 + second_part;

            sw.WriteLine(result);

        }
    } 
}

Console.ReadKey();