![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
少し長文になります。
Javaで、複数のオブジェクトに格納された文字列をループでgetして、
1つのファイル(test.txt)内に出力していくプログラムを作っています。
ファイル出力する際に使用可能なクラスがいくつもあるため、
どれを選択すればいいのか迷ってます。
以下の条件から、使用すべきクラスを教えて下さい!
<ファイル出力の条件>
ーーーーーーーーーーーーーー
1. ファイル(test.txt)は毎回新規で1ファイルのみ作成して、
そのファイル内にオブジェクトからループでgetした文字列を1行ずつ出力していく。
(次回実行の直前に、前回のtest.txtは手動削除する。)
2. test.txt内には日本語が出力される可能性があり、且つ、
test.txtをWindowsのアプリケーションで利用するため、
SJISにエンコードして出力する。
※Javaの実行環境はLinux
3. バッファを使って出力する。
ーーーーーーーーーーーーーー
以上です。
私の考えでは、全てキャラクタストリームを使って、
----------
FIleWriter fw = new FileWriter("test.txt",true);
OutputStreamWriter osw = new OutputStreamWriter(fw,"SJIS");
BufferedWriter bw = new BufferedWriter(osw);
----------
でいいのかなと思ったのですが、
ネットを見ていると
----------
FileOutputStream os = new FileOutputStream("output");
OutputStreamWriter osw = new OutputStreamWriter(os, "JIS");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
----------
という記述もあり、
わざわざキャラクタストリームとバイトストリーム(FileOutputStream)を混ぜて使っている意図もよく分かりません。
(文字列を扱うのに、バイトストリームを使う意味って無いですよね??)
それから、私の例では
FIleWriterインスタンス生成時の引数で"true"を指定して
test.txtに"追記"するように設定してますが、
test.txt自体は毎回新規作成のものを使うので、この場合trueもfalseも不要でしょうか??
(→認識の確認として、
「trueやfalseはあくまで既存ファイルに対しての追記/上書きの設定であって、
ファイルをオープンしてクローズするまでの間はtrueなど設定しなくても
ずっと末尾に追記されていく」という認識でOK?)
また、true/falseが不要な場合、
FIleWriterは使わずに、
----------
OutputStreamWriter osw = new OutputStreamWriter("test.txt","SJIS");
BufferedWriter bw = new BufferedWriter(osw);
----------
としても問題無いでしょうか??
以上、分かる方、アドバイスください!
No.1ベストアンサー
- 回答日時:
APIはごらんになっていますか?
http://java.sun.com/javase/ja/6/docs/ja/api/java …
>OutputStreamWriter osw = new OutputStreamWriter(fw,"SJIS");
>OutputStreamWriter osw = new OutputStreamWriter("test.txt","SJIS");
まず、このようなコンストラクタはOutputStreamWriterクラスにはありません。
引数に渡せるのはjava.io.OutputStreamクラスとそのサブクラスだけです。
なので、文字コードを指定したいなら必然的に
>FileOutputStream os = new FileOutputStream("output");
>OutputStreamWriter osw = new OutputStreamWriter(os, "JIS");
>BufferedWriter bw = new BufferedWriter(osw);
といったコードになると思います。
そこまでパフォーマンスを気にしなくてもいいのであれば、
PrintWriter pw = new PrintWriter("test.txt", "SJIS");
でいいのかもしれませんけど。
的確なご回答ありがとうございます。
今回はパフォーマンスもある程度考慮しなくてはならないのでバッファも使うことにしました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Mac EclipseのFileReaderでファ...
-
サポートされたファイル形式お...
-
エアコンの冷媒 R410Aの重...
-
PC内で速度を遅くした音源をCD...
-
スマホでtxtファイルを編集する...
-
PDFファイルの倍率を変えて保存...
-
【VBA】マクロの入ったファイル...
-
ビデオファイルのプロパティの...
-
2枚、マイクロSDカードを入...
-
TextBoxにフォーカスを与えると...
-
Fortniteのクラッシュについて
-
個別に違う添付ファイルを付け...
-
Mac FLVのクイックルックがで...
-
ファイル数と合計サイズの取得方法
-
Emacsで保存ができない
-
多数の見開き画像を自動で二分割
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ASPを使ってサーバ側のバッチを...
-
A4の紙に印刷されている文字を...
-
パワーポイント2007で上書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル出力クラスの選択につ...
-
C言語について。
-
Mac EclipseのFileReaderでファ...
-
ユニオンクエリで開いたクエリ...
-
Googleマップに保存した地点が...
-
サポートされたファイル形式お...
-
個別に違う添付ファイルを付け...
-
【VBA】マクロの入ったファイル...
-
PDFファイルの倍率を変えて保存...
-
A4の紙に印刷されている文字を...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
ガラケーからPCへの写真の取り込み
-
PC内で速度を遅くした音源をCD...
-
VBS フォルダ内にあるすべての...
-
エアコンの冷媒 R410Aの重...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
stdio.hの中身
-
ビデオファイルのプロパティの...
おすすめ情報