答えて
もしそうでなければ、例外がスローされると思います。だから何もしない。それは問題があるかどうかを教えてくれます。あなたはそれが「using
」でなければなりません。しかし:
using(StreamReader sr = new StreamReader(Path_To_File))
{
// consume sr
}
StreamReadersはIDisposableを実装しているため、 'using'ブロックを使用できます。
using(StreamReader sr = new StreamReader(Path_To_File)) {
}
それが例外をスローしなかった場合、それが正しく実行しました。例外をスローした場合は、cosntructorがそれ以降に整理することを期待するのが妥当です。それ以外の場合は、完了したらDispose
に電話して、関連するリソースを解放する必要があります。他の回答が言ったように、これを達成するためにはほとんど確実にusing
ステートメントを使いたいと思っています。
また、代わりにFile.OpenText
を使用することがあります:私は(かなりめったにありません)異なるオプションで渡す必要があるとき
using (TextReader reader = File.OpenText(fileName))
{
}
私は通常StreamReader
コンストラクタを使用します。
、これはあまりにも明白と思われるので、私は、問題の何かが欠けてもよいが、探すために二つのことが
- あり、それはエラーをスローしましたか? と
- これを実行してStreamReaderを使用して読み込むと、期待する内容が得られますか?
1が偽で2が真であれば、正しく実行されます。
あなたは通常、インスタンスsrで何もしません。 try catchブロック内のそのオブジェクトを参照する次のコマンドをカプセル化します。
StreamReader constructor(文字列パスの引数を前提とする)は、失敗した場合に例外をスローします。リンクから引用
:
ArgumentExceptionが
パスは空の文字列( "")です。
ArgumentNullException
パスがnullです。
FileNotFoundException
ファイルが見つかりません。
DirectoryNotFoundException
マッピングされていないドライブ上にあるなど、指定されたパスが無効です。
IOException パスに、ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくないか無効です。
次のような標準のtry/catchブロックを使用して例外をチェックしたいと思います:
string pathToFile = @"G:\My Documents\donkeysex.txt";
StreamReader sr = null;
try
{
sr = new StreamReader(pathToFile);
sr.Read();
// etc.
}
catch (System.IO.FileNotFoundException ex)
{
// Handle exception
}
catch (System.IO.DirectoryNotFoundException ex)
{
// Handle exception
}
catch (System.IO.IOException ex)
{
// Handle exception
}
catch (Exception ex)
{
// Handle exception
}
finally
{
if (sr != null)
sr.Dispose();
}
あなただけのファイルを使用して、次に読む前に存在していることを確認したい場合:
if (System.IO.File.Exists(pathToFile))
{
// Do your stuff
}
あなたの詳細な回答はDanにありがとうございます。それは完璧に働いた。 – zack
+1は良い理論的答えであり、唯一のものはtry/catchである。しかし、これを生産コードにコピーしてコピーしたくない。 VirenはExcption Handling戦略を調査すべきです。 –
- 1. C++ファイル操作
- 2. C++でのWinRT非同期ファイル操作
- 3. ファイル操作のためのC#スレッド
- 4. C#でデータを操作する操作
- 5. C#でのダイアログボックスの操作
- 6. バイナリファイルのCでの操作
- 7. C++でのセットの操作
- 8. バットでのファイルの操作
- 9. Cでのポインタ操作
- 10. C++での日付操作
- 11. C++での低レベルディスク操作
- 12. Pythonでのファイル操作
- 13. AmazonS3でのファイル操作
- 14. Javaでのファイル操作
- 15. C++ビット操作
- 16. C#パス操作
- 17. コレクションの操作C#
- 18. popenのファイル操作
- 19. C++画像操作
- 20. C#クロススレッド操作エラー
- 21. PHPファイル操作リスト
- 22. C#のバイトの操作
- 23. C#アプリケーションのシステムアイコンの操作
- 24. c#コンテナのpush_back操作
- 25. クラスオブジェクトの操作方法C++
- 26. C++マクロのテキスト操作
- 27. ANSI Cのビット操作ライブラリ
- 28. ファイルの入出力操作
- 29. ハスケル操作ファイルの内容
- 30. c#でのSQL Serverメタデータの操作
それがなかったですどんなエラーも投げないでください。 1は偽です。 2は真です。しかし、私はこれがいつも起こっていることを保証したいと思っていました。そして、エラーがどこに発生したのか分かりました。だから私はjst好奇心が強いと私はなぜ私の質問をしたthats。 – zack