[解決済み] JavaにおけるPrintWriterとFileWriterの比較
2022-01-30 11:34:55
質問事項
JavaでのPrintWriterとFileWriterは同じで、どちらを使ってもいいのでしょうか?今までは、結果が同じなので両方使っていました。何か特別なケースで、どちらかを優先する意味があるのでしょうか?
public static void main(String[] args) {
File fpw = new File("printwriter.txt");
File fwp = new File("filewriter.txt");
try {
PrintWriter pw = new PrintWriter(fpw);
FileWriter fw = new FileWriter(fwp);
pw.write("printwriter text\r\n");
fw.write("filewriter text\r\n");
pw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
解決方法は?
coderanch.comによると、答えを組み合わせると、次のようになります。
FileWriterは、IOの文字表現です。つまり、文字を書き込むのに使えるということです。内部的にはFileWriterは、基盤となるOSのデフォルトの文字セットを使用し、文字をバイトに変換してディスクに書き込むことになります。
PrintWriter & FileWriterです。
類似点
- どちらもWriterを継承しています。
- どちらも文字表現クラスです。つまり、文字を処理し、デフォルトの文字セットでバイトに変換します。
相違点
- FileWriterはIOに失敗した場合、IOExceptionを投げるが、これはチェックされた例外である。
- PrintWriter のメソッドはいずれも IOExceptions をスローしませんが、代わりに checkError() で取得できる boolean フラグをセットします。
- PrintWriter には、特定のメソッドが呼び出されたときに自動フラッシュを有効にするために使用できるオプションのコンストラクタがあります。FileWriter にはそのようなオプションはありません。
- FileWriterにはオプションのコンストラクタがあり、ファイルへの書き込み時に"write()"メソッドが呼ばれると、既存のファイルに追記することができます。
PrintStreamとOutputStreamの違い。上の説明と同様で、characterをbyteに置き換えるだけです。
PrintWriter には次のメソッドがあります。
close()
flush()
format()
printf()
print()
println()
write()
で、コンストラクタは:
File (as of Java 5)
String (as of Java 5)
OutputStream
Writer
一方、FileWriterは以下のメソッドを持っています。
close()
flush()
write()
で、コンストラクタは:
File
String
関連
-
[解決済み】破損したjarファイル
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】-XX:MaxPermSizeは何をするのですか?
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件
-
[解決済み] ファイルを作成し、書き込むにはどうすればよいですか?