删除行的文件方法

时间:2015-02-19 14:04:14

标签: c#

我正在研究一种方法,该方法使用多行读取txt文件,然后将其转换为只有一行的txt文件。

像这样:

first line,
second line,
third line.

进入这个:

first line, second line, third line.

我有这个代码,但它只显示“第三行”。在文件中:

MAIN:

static void Main(string[] args)
    {

        string fLine= "first line,\n second line,\n third line.";
        string sLine= "";

        Console.Write(fLine);
        Console.WriteLine();
        Console.Write(sLine);

        string filDat1 = "D:\\Dat1.txt";
        string filDat2 = "D:\\Dat2.txt";

        if (File.Exists(filDat1))
            Console.WriteLine("File already exist!");
        else
        {
            File.WriteAllText(filDat1, fLine);
        }

        File.WriteAllText(filDat2, sLine);

        changeFile(filDat1);

        Console.ReadKey();
    }

方法:

    public static void changeFile(string name)
    {
        StringBuilder dato;
        string filDat2 = "D:\\Dat2.txt";

        try
        {
            string[] lines = File.ReadAllLines(name);

            foreach (string line in lines)
            {
                Console.WriteLine("Words in file: " + line);

            }
            Console.WriteLine();
            Console.Write("New words in new file: ");

            foreach (string line in lines)
            {
                string line1 = line;
                dato = new StringBuilder();
                line1 = line1.Replace("\n", " ");
                for (int i = 0; i < line1.Count(); i++)
                {
                    if (!line1[i].Equals(""))
                    {
                        dato.Append(line1[i] + "");
                    }
                }
                Console.WriteLine(dato);
                File.WriteAllText(filDat2, dato.ToString());
            }

        }

我不知道我做错了什么。在我的案例中,我只能说“第三个字”。在新文件Dat2.txt。

此外,有没有办法创建一个可以采取两个文件的方法。一个要读取的文件和一个要更改文本的文件?

2 个答案:

答案 0 :(得分:0)

以下是仅使用1行为给定文件创建新文件的方法:

  public static void changeFile(string InputPath,string OutputPath)
    {

            List<string> OUTPUT = new List<string>();
            StreamReader sr = new StreamReader(InputPath);
            while (!sr.EndOfStream)
            {
                OUTPUT.Add(sr.ReadLine());
            }
            sr.Close();
            StreamWriter fs = new StreamWriter(OutputPath);
            string output = "";

            foreach (string line in OUTPUT)
            {
                output += line + " ";
            }
            fs.WriteLine(output);
            fs.Close();
}

答案 1 :(得分:0)

如果你很好奇为什么你的方法不起作用,那是因为你每次迭代重置dato,只需将它移到外面然后离开你,我也将写入移到了外面你只需要这样做一次。

dato = new StringBuilder();
foreach (string line in lines)
{
     string line1 = line;
    line1 = line1.Replace("\n", " ");
    for (int i = 0; i < line1.Count(); i++)
    {
        if (!line1[i].Equals(""))
        {
            dato.Append(line1[i] + "");
        }
    }
    Console.WriteLine(dato);
}
File.WriteAllText(filDat2, dato.ToString());