2016-05-13 14 views
0

私は問題がある、私はsave.txtファイルにいくつかのデータを書いていますが、ファイルには私が書いた最後の項目です。C#のみの最後の文字列

これは私のコードです:

SetLine("save.txt", Obchod.numbers[0].ToString(), 5); 
SetLine("save.txt", Obchod.numbers[1].ToString(), 6); 
SetLine("save.txt", Obchod.numbers[2].ToString(), 7); 
SetLine("save.txt", Obchod.numbers[3].ToString(), 8); 
SetLine("save.txt", Obchod.numbers[4].ToString(), 9); 
SetLine("save.txt", Obchod.numbers[5].ToString(), 10); 
SetLine("save.txt", Obchod.numbers[6].ToString(), 11); ` 

void SetLine(string filename, string text, int linenumber) 
{ 
    using (StreamWriter sw = new StreamWriter(@filename, false)) 
    { 
     for (int i = 0; i < linenumber; i++) 
     { 

     } 

     sw.WriteLine(text); 
     sw.Close(); 
    } 
} 
+2

ループは空です。 – Renan

+0

@Renanどのループですか? –

+0

forループですが、間違っています - ループは無関係です – wizzardmr42

答えて

2

あなたが閉鎖し、各書き込みの間でファイルを再開しています。上書きするのではなく、上書きしないで追加するパラメータを指定する(既定値)

+1

実際には、appendパラメータに 'false'を明示的に渡しているので、デフォルトは重要ではありません。 –

+0

ああ - StreamWriterが私の頭の上から落ちるのを知らないので、それが追加オプションであることに気付かなかった! – wizzardmr42

+0

私の意見ではよく説明された答えではありません。少なくとも – musefan

2

StreamWriter-constructorに渡します。これは、ファイルにテキストを追加せずにテキスト全体を上書きするように指示します。

私はあなたがテキストファイルを書き換えたいと思うし、最後のパラメータはどの行を上書きするべきかを示しています。

public static void ReplaceLine(string filename, string text, int linenumber) 
{ 
    string[] allLines = File.ReadAllLines(filename); 
    if (allLines.Length < linenumber) 
     return; // or ArgumentException? 
    allLines[linenumber - 1] = text; 
    File.WriteAllLines(filename, allLines); 
} 

をしかし、それは、それは常にメモリにファイルをロードしますので、ループ内でこのメソッドを使用するためには効率的ではありません1行を置き換え、ファイル全体を書き換えていることに注意してください。そして、これはそれを行う必要があります。

関連する問題