こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイルの書き出しについて、どちらのほうが良い方法でしょうか?

下の2つのメソッドでどちらのほうがよいでしょうか?
実行時間的にはuseStringのほうが若干速いのですが...
メモリ消費とかセオリーとか常識とかそういうのを含めて解説を頂きたいです。
今のところ結果は同じものが出力されています。

public static void useString() {
try {
System.out.println("start useString");
URL url =
new URL("どこかのページ");
File outputFile = new File("test1.html");
InputStream input = url.openStream();
BufferedReader reader =
new BufferedReader(new InputStreamReader(input));
BufferedWriter writer =
new BufferedWriter(new FileWriter(outputFile.toString(), true));
String tmp = "";
String str;
while ((str = reader.readLine()) != null) {
writer.write(tmp);
}
reader.close();
input.close();
writer.write(tmp);
writer.close();
} catch (IOException e) {
e.printStackTrace(System.out);
}
}

public static void useStream() {
try {
URL url =
new URL("どこかのページ");
File outputFile = new File("test.html");
InputStream input = url.openStream();
FileOutputStream output = new FileOutputStream(outputFile);
byte[] bytes = new byte[2048];
int n;
while ((n = input.read(bytes)) >= 0) {
output.write(bytes, 0, n);
}
input.close();
output.close();
} catch (IOException e) {
e.printStackTrace(System.out);
}
}

投稿日時 - 2003-03-18 00:57:59

QNo.500855

すぐに回答ほしいです

質問者が選んだベストアンサー

> 下の2つのメソッドでどちらのほうがよいでしょうか?
> メモリ消費とかセオリーとか常識とかそういうのを含めて解説を頂きたいです。

何より用途によって使い分けるべきです。
useString の方はテキストデータでなければいけません。

バイナリデータにアクセスすることがない
文字列として何かしらの処理を行うことが想定される
といった場合には、useString を使うべきでしょう。

逆に、
バイナリデータにもアクセスするかもしれない
テキストデータでも、それを意識する必要が全くない
と言う場合であれば、useStreamを使うべきでしょう。


なお、useStreamの方でもBufferedInputStream/BufferedOutputStream
を使った方がよいと思います。。。

投稿日時 - 2003-03-19 10:20:14

お礼

お礼が遅くなって申し訳ありません。
有り難うございました。

ご回答を参考にし自分で例題をつくりやってみたところ
理解できました。

またひとつ賢くなれたような気がします。

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

投稿日時 - 2003-03-27 01:17:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-