4

私はJavaが初めてで、現在 File io を学んでいます。しかし、それを扱うオブジェクトがたくさんあるので、私はioについて非常に混乱しています(FileReader、FileWriter、BufferedReader、BufferedWriter、FileInputStream、FileOutputStream ...そしてもっとあるかもしれません)。

File io の最も効率的なプロセスを知りたいです (何を使用すればよいですか?)。エンコーディングは必要ありません。テキストファイルを処理したいだけです。簡単なサンプルコードは非常に役に立ちます。

ありがとうございました。

4

3 に答える 3

8

理解し、覚えておくべき最初の重要なポイント:

  • ストリーム: 一連のバイト

  • Reader/Writer :文字列( Strings )

それらを混在させたり、必要がなければ別のものに変換したりせず、常にエンコーディングを指定してください。

いくつかの簡単なレシピ:

ファイルを一連のバイトとして読み取る(バイナリ読み取り)。

new FileInputStream(File f);

同じ追加バッファリング:

new BufferedInputStream(new FileInputStream(File f));

ファイルを一連の文字として読み取る(テキスト読み取り)。

new FileReader(File f); // ugly, dangerous, does not let us specify the encoding

new InputStreamReader(new FileInputStream(File f),Charset charset);  // good, though verbose

行単位のバッファリングを追加するには (テキスト行を読み取るため)

new BufferedReader(  ... someReader ... );  

出力/書き込みは実質的に同じです(出力/ライター)

于 2012-12-19T19:43:10.520 に答える
5

ルールの簡単な親指。

テキスト - リーダー / ライター
バイナリ - 入力ストリーム / 出力ストリーム

ファイルで詳細を読むことができます

于 2012-12-19T19:34:14.840 に答える
0

読む

以下により、行ごとに読むことができます

BufferedReader br = new BufferedReader(new FileReader(fileLocationTxt));

書き込み

以下は、行ごと/部分ごとに書くことができます

DataOutputStream ds = new DataOutputStream(new FileOutputStream(newLocation));

あなたの質問に関しては、最良の選択肢はありません。ここでも、一度に 2 つ以上を使用する必要があることがわかります (コンストラクターを見てください。コンストラクターは、他のリーダー/ライターまたは inputStream/outputStream を受け入れます。

最適なオプションは、本当にやりたいことによって異なります

于 2012-12-19T19:45:37.360 に答える