3

これが私のコードです:

StreamReader reader = new StreamReader("war.txt");
string input = null;

while ((input = reader.ReadLine()) != null)
{
    Console.WriteLine(input);
}

reader.Close();

上記のプログラムは、ファイル「war.txt」から行ごとに読み取り、出力します。逆の順序で出力されるようにプログラムを書き直す必要があります。つまり、最後の行が最初で最初の行が最後です。たとえば、「war.txt」に次のものが含まれているとします。

Hello.

How are you?

Thank you.

Goodbye.

プログラムは次のように出力します。

Goodbye.

Thank you.

How are you?

Hello.

私はC#で非常に新しいです助けてください!ありがとう!

4

8 に答える 8

3

そのためには、とにかくデータをバッファリングする必要があります (FileStreamファイルを逆方向​​に読み取るために APIでトリッキーな作業を行わない限り)。ちょうどどうですか:

var lines = File.ReadAllLines("war.txt");
for(int i = lines.Length - 1; i >= 0; i--)
    Console.WriteLine(lines[i]);

ファイルを(行単位で)配列にロードし、配列を最後から出力します。

その LINQ バージョンは次のようになります。

foreach(var line in File.ReadLines("war.txt").Reverse())
    Console.WriteLine(line);

しかし、率直に言って、配列バージョンの方が効率的です。

于 2012-08-13T06:53:00.927 に答える
0

これがメイトの例です。「using System.IO」を追加することを忘れないでください

試す

        {
            const int Size = 7;
            decimal[] numbers = new decimal[Size];
            decimal total = 0m;

            int index = 0;

            StreamReader inputfile;

            inputfile = File.OpenText("Sales.txt");

            while (index < numbers.Length && !inputfile.EndOfStream)
            {
                numbers[index] = decimal.Parse(inputfile.ReadLine());
                index++;
            }

            inputfile.Close();

            foreach (decimal Sales in numbers)
            {
                outputlistBox1.Items.Add(Sales);
                total = total + Sales;
            }

            textBox1.Text = total.ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
于 2014-06-05T04:41:30.907 に答える
0

次のような再帰を使用して実行できます。

void printReverse(int n)
{
   String line = reader.readLine();

   if (n > 0)
     printReverse(n-1);

   System.out.println(line);
}
于 2012-08-13T06:53:42.160 に答える
0

試す

File.ReadAllLines(myFile)
    .Reverse();

完全なコード

var list =  File.ReadAllLines(filepath).Reverse().ToList();
           foreach (var l in list)
               Console.WriteLine(l);

実装の詳細

Enumerable.Reverse メソッド- シーケンス内の要素の順序を反転します

File.ReadAllLines メソッド (文字列) - テキスト ファイルを開き、ファイルのすべての行を読み取り、ファイルを閉じます。

于 2012-08-13T06:54:40.223 に答える
0

行をListに追加してから、リストでReverseを使用してから、ForEachを使用してアイテムを出力することを検討してください。

于 2012-08-13T06:54:42.897 に答える
0

別のオプション: 各行Stackを読みながら に保存します。ファイルを読み取った後、スタックをポップして行を逆順に出力します。

于 2012-08-13T06:55:00.660 に答える
0

列挙可能な拡張関数を使用すると、これを短くすることができます。

foreach(var l in File.ReadAllLines("war.txt").Reverse())
    Console.WriteLine(l);
于 2012-08-13T06:56:25.533 に答える