在c#中删除文本文件中的一些内容

时间:2013-05-02 14:59:42

标签: c# winforms checkbox text-files

我有一个名为Load.txt的文本文件,其中包含大约200行。我有一个复选框,如果选中它,那么我想创建一个新文件,它只有Load.txt中的前100行。我正在使用c#这个程序。实际上我真正的要求是我必须从第110行删除201.And我的代码在下面,因为某种原因它从第1行删除到92.我不知道发生了什么。

            String line = null;

            String tempFile = Path.GetTempFileName();
            String filePath = saveFileDialog1.FileName;

            int line_number = 110;
            int lines_to_delete = 201;

            using (StreamReader reader = new StreamReader(sqlConnectionString))
            {
                using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
                {
                    while ((line = reader.ReadLine()) != null)
                    {
                        line_number++;

                        if (line_number <= lines_to_delete)
                            continue;

                        writer.WriteLine(line);
                    }
                }
            }

所以我想出了这个问题。但我的下一个问题是:我正在更新文本文件中的一些变量。在我的代码没问题之前。但现在该代码与我的删除行代码冲突。如果我能删除行,那么我无法更新这些变量。

我的代码是:

File.WriteAllLines(saveFileDialog1.FileName, System.IO.File.ReadLine(sqlConnectionString).Take(110));
File.WriteAllText(saveFileDialog1.FileName, fileContents);

3 个答案:

答案 0 :(得分:2)

File.WriteAllLines("new.txt", File.ReadLines("Load.txt").Take(100));

更新后......

var desired = File.ReadLines("Load.txt")
                  .Take(110)  // "And I want to keep 1-110" -- OP
                  .Select(line => UpdateLine(line));  // "And I also want to update variables between 1-110" -- OP

File.WriteAllLines("new.txt", desired);

...

static string UpdateLine(string given)
{
     var updated = given;
     // other ops
     return updated;
}

MSDN File.WriteAllLines
MSDN File.ReadLines

答案 1 :(得分:0)

这应该完成你所需要的。它读取文本然后转储100行。

     System.IO.File.WriteAllLines("newLoad.txt", System.IO.File.ReadLines("Load.txt").Take(100));

答案 2 :(得分:0)

“我想创建一个只有前100行的新文件”

保持原始模型,这是保持前100行的一种方法:

        int LinesToKeep = 100;
        using (StreamReader reader = new StreamReader(sqlConnectionString))
        {
            using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
            {
                for (int i = 1; (i <= LinesToKeep) && ((line = reader.ReadLine()) != null); i++)
                {
                    writer.WriteLine(line);
                }
            }
        }

“我真正的要求是我必须从第110行删除到201”

所以复制文件,但跳过110到201行?

        int currentLine = 0;
        using (StreamReader reader = new StreamReader(sqlConnectionString))
        {
            using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
            {
                while ((line = reader.ReadLine()) != null)
                {
                    currentLine++;
                    if (currentLine < 110 || currentLine > 201)
                    {
                        writer.WriteLine(line);
                    }
                }
            }
        }