从文本文件构建表

时间:2013-03-19 17:18:00

标签: c#

我正在尝试从文本文件构建表格,但是: 当我编译程序时,输入的信息后面会出现它应该出现的表格,但表格是空白的。显然我在某个地方犯了一个错误..你能帮忙吗?

   StreamReader swreNames = File.OpenText("Names.txt");

        do
        {
            Console.SetCursorPosition(15, 2);
            Console.Write("--- Names Table ---");
            Console.SetCursorPosition(10, 4);
            Console.Write("First Name");
            swrNames.WriteLine(firstname); // Reads from first name from file Names.txt
            Console.SetCursorPosition(10, Counter + 6); // Aligns first name within table settings 
            Console.SetCursorPosition(28, 4);
            Console.Write("Surname");
            swrNames.WriteLine(lastname); // Reads from last name from file Names.txt
            Console.SetCursorPosition(28, Counter + 6);
            Console.SetCursorPosition(48, 4);
            Console.Write("Age");
            swrNames.WriteLine(age); // Reads from age from file Names.txt
            Console.SetCursorPosition(48, Counter + 6);
            Console.ReadLine();
            Console.Clear();
        } while ((firstname = swreNames.ReadLine()) != null); //Writes out the input from the text file

好的我已编辑代码以显示我认为存在问题的位置,希望它的阅读格式稍微容易一点!

请帮忙。

2 个答案:

答案 0 :(得分:2)

好的,我们假设您的文件内容遵循[first name] [last name]格式,如:

Axl Rose
Joey Ramone
Steve Vai
BB King

所以,你的代码看起来像是:

        StreamReader fileContent = File.OpenText(@"C:\my-file.txt");

        Console.SetCursorPosition(15, 2);
        Console.Write("--- Names Table ---");
        Console.SetCursorPosition(10, 4);
        Console.Write("First Name");
        Console.SetCursorPosition(28, 4);
        Console.Write("Surname");

        int topOffset = 6;

        string currentLine = fileContent.ReadLine();

        while (!string.IsNullOrWhiteSpace(currentLine))
        {
            string firstName = currentLine.Split(' ')[0];
            string lastName = currentLine.Split(' ')[1];

            Console.SetCursorPosition(10, topOffset);
            Console.Write(firstName);
            Console.SetCursorPosition(28, topOffset);
            Console.Write(lastName);

            topOffset += 2;
            currentLine = fileContent.ReadLine();
        }

        fileContent.Dispose();

        Console.ReadLine();

这是最佳解决方案,您的文件可能与此格式不同。好了,现在轮到你编写代码了。

答案 1 :(得分:0)

当您的评论说您正在写作时,您正在阅读文件流,并在您的评论说您正在阅读时写作。您永远不会将读取的数据放入控制台流中。

此外,您将文件流的整个读取行,一次一个地放入文件名并将其写回同一个流...不是真的可取。