5

テキスト ファイル内でアイテム/値を上下に移動するにはどうすればよいですか。私のプログラムがテキストファイルを読み取る瞬間、読み取る行がなくなったときに停止するようにしばらく時間がかかります。if ステートメントを使用して、カウンターが移動する値の行と等しいかどうかを確認しました。ここから先に進む方法がわかりません。

  _upORDown = 1; 

    using (StreamReader reader = new StreamReader("textfile.txt"))
    {
        string line = reader.ReadLine();
        int Counter = 1;
        while (line != null)
        {

            if (Counter == _upORDown)
            {
              //Remove item/replace position

            }
            Counter++;
        }
    }
4

2 に答える 2

3

メモリ内のファイルを読み取り、行を必要な場所に移動して、ファイルを書き戻すことができます。ReadAllLinesとを使用できますWriteAllLines

このコードは、position の文字列をi1 行上に移動します。

if (i == 0) return; // Cannot move up line 0
string path = "c:\\temp\\myfile.txt";
// get the lines
string[] lines = File.ReadAllLines(path);
if (lines.Length <= i) return; // You need at least i lines
// Move the line i up by one
string tmp = lines[i];
lines[i] = lines[i-1];
lines[i-1] = tmp;
// Write the file back
File.WriteAllLines(path, lines);
于 2012-04-30T14:34:16.083 に答える
0

LINQを使用した@dasblinkenlightの回答:

string path = "c:\\temp\\myfile.txt";
var lines = File.ReadAllLines(path);
File.WriteAllLines(
    path,
    lines.Take(i).Concat(
        lines.Skip(i+1)
    )
);

iこれにより、位置(ゼロベース)の行が削除され、他の行が上に移動します。

新しい行に追加:

string path = "c:\\temp\\myfile.txt";
var lines = File.ReadAllLines(path);
var newline = "New line here";
File.WriteAllLines(
    path,
    lines.Take(i).Concat(
        new [] {newline}
    ).Concat(
        lines.Skip(i+1)
    )
);
于 2012-12-18T15:49:04.897 に答える