3

私がやろうとしているのは、ファイルa.txtを読んで、各文字を1行で出力することです。この問題を解決するのは非常に困難です。助けていただければ幸いです。コードを記述した場合は、コメントしてください。私は初心者なのでもっとはっきりと

namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
            using (StreamReader r = new StreamReader("a.txt"))
            {

               string @char;
               while((@char = r.ReadBlock() != null))
                foreach(char i in @char)
                {
                    Console.WriteLine(i);

                }

            }

        }
    }
}
4

1 に答える 1

9

ファイルを読み取り、すべてのファイルをcharごとに出力します。各charは新しい行にあります。

わかった; それを行う方法はたくさんあります。最も単純なのは(小さなファイルの場合):

string body = File.ReadAllText("a.txt");
foreach (char c in body) Console.WriteLine(c);

ReadBlockファイルを(行ではなく)チャンクで処理するために使用するには:

using (StreamReader r = new StreamReader("a.txt"))
{
    char[] buffer = new char[1024];
    int read;
    while ((read = r.ReadBlock(buffer, 0, buffer.Length)) > 0)
    {
        for (int i = 0; i < read; i++)
            Console.WriteLine(buffer[i]);
    }
}

これにより、一度に最大1024文字のブロックが読み取られ、読み取った文字がすべて新しい行に書き出されます。変数readは、その反復で読み取った文字数を示します。テスト(わずかに隠されてread > 0いますが、そこにあります)は、「ファイルの最後に到達しましたか?」と尋ねます。-ReadBlock最後に0を返します。

于 2012-08-16T10:44:51.780 に答える