2012-03-01 15 views
0

を実行したときに、私は次のコードを持って作成されていませんか?ファイルが、私はこのコード

vanzare.WriteLine("Hello World"); 
total.WriteLine("Helle World again!"); 
totall.WriteLine("Hello World again and again!"); 

問題が解決しました。

+3

常に(使用する使用の習慣を養う){}ブロック時にIO操作を実行する。 – Zenwalker

+0

私はあなたのアプリケーションのスタートアップパスにユーザーごとのデータを保存しているようです...もしそれが 'Environment.SpecialFolder'列挙(http://bit.ly/Aor3LW)をチェックしないのであれば、 )。 – PedroC88

+1

@zenwalkerなぜですか? – PedroC88

答えて

0

ファイルを閉じますか?おそらく、.NETとOSの両方がキャッシュしているため、書き込みを遅らせるため、ファイルへの書き込みはすぐには発生しません。ファイルはStreamWriterを開くとすぐに表示されます。ファイルの短期的な使用方法について

(例えばものを書き、それを閉じるために)あなたは間違いなくusingステートメントを使用する必要があります。適切直後にファイルを閉じていないすることを確認します

using (StreamWriter vanzare = new StreamWriter(...)) { 
    vanzare.WriteLine("Hello World"); 
} 

管理されていないリソースを必要以上に長くしておきます。

ファイルを1つの方法より長く開いておく必要がある場合は、もちろん手動で行う必要があります。 StreamWriter(および他のIDisposable)が不要になったら、Dispose()メソッドを呼び出してください。

+0

それを閉じるだけでなく、それをフラッシュします。 – PedroC88

+0

PedroC88、 'StreamWriter'で' Close() 'や' Dipose() 'を呼び出すと起こります。彼らのコードは、オブジェクトが適切に閉じられて処分されることを知っているように、すべてを見ていません( 'using'ステートメントがありません)。 – Joey

+0

Microsoft Docによれば...そうです。 XDのコードを改訂しようと思います。 – PedroC88

0

使用しているプラ​​ットフォームによっては、ファイルパスがスラッシュを使用していますが、動作しない可能性があります。

パスとファイル名を連結するPath.Combine方法を使用し、それはファイルシステムの正しいパス区切り文字を使用する:

string sold = Path.Combine(Application.StartupPath, "totalsold" + username); 
if (File.Exists(sold)) { 
    suma = new List<String>(File.ReadAllLines(sold)); 
} 
+0

それは問題ではない、問題は、vanzare、トータルファイルが作成されていないと、コンテンツがそれに書き込まれていないということです。 –

+0

@EmilDumbazu:ファイルが作成されていないことは確かですか?パス区切りが間違っている場合は、期待どおりに別のフォルダに作成される可能性があります。 – Guffa

+0

スラッシュはWindowsでは問題ありませんが(少なくともWin32 APIレベルではありませんが、 'cmd'の組み込み関数は別の問題です)。 (もちろん、Path.Combineを使用しないという言い訳はありませんが、それに同意しました;)) – Joey

関連する問題