アプリ版:「スタンプのみでお礼する」機能のリリースについて

java初心者です。FileWriterで8kb以上ファイルに書き込めなくて困っています。


java.sun.comのサイトのページFileWriterクラスに書いてある詳細説明(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
によるとFileWriterで書き込めるサイズはデフォルトで決まっているため、自分で値を指定しない限りあるサイズ以上はファイルに書き込めないそうですが、
その値の指定の仕方(ソースの書き方)が分かりません。
「これらの値を自分で指定するには、FileOutputStream 上に OutputStreamWriter を構築してください。」(引用)
この意味が自分には全く分かりません。


実際に行き詰まっている所は...

JTextArea htmlArea = new JTextArea();
FileWriter objFw = new FileWriter("ファイルの絶対パス");
...
...
...
objFw.write(htmlArea.getText());←ここで8kb以上ファイルに書き込めなくて困っています



どのようにソースを書けば問題を解決出来ますでしょうか?

A 回答 (2件)

掲載されたコードを一部修正して試してみましたが、全部書き出せましたよ。

みたところ、BufferdWriterで書き出し後にflushしておらず、なおかつcloseしていませんでしたが、これが原因ではありあせんか? BufferedWriterはテキストをすぐに書き出さず、バッファに貯めてから書き出しますから、バッファに残っている分をflushし、ストリームをcloseしないまま終了しては、バッファに残った分はファイルに書き出されずに終わってしまいます。BufferedReaderをcloseする手前に、BufferedWriterをflushしcloseする文を追記して試してみてください。
    • good
    • 1
この回答へのお礼

うまくファイルに書き込めていました!
長い時間悩んだんでホント有難うございました!

お礼日時:2011/01/11 15:19

>FileWriterで書き込めるサイズはデフォルトで決まっているため、自分で値を指定しない限りあるサイズ以上はファイルに書き込めないそうですが、



???
長年、Javaを使っていますが、そんな話は初耳です。
まさかと思って、さきほど、300KBほどのStringをFileWriterで書きだしてみましたが、何の問題もなく動きました。なにか勘違いしていませんか?? あるいは、もし実際に8KB以上書き出せなかったというなら、そのソースコードを掲載していただけますか。

この回答への補足

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.String;
import java.lang.System;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class urlsort {

public void M_urlsort(String[] A00) {
String C00=null;
String C01=null;
String C02=null;
C00=A00[0];//url
C01=A00[1];//正規表現の設定
C02=A00[2];//ファイルのパス
Matcher L05=null;

System.out.printf("[%s]から、URLを検索...%n", C00);
int L00 = 0;

try {
URL L01 = new URL(C00);
BufferedReader L02 = new BufferedReader(new InputStreamReader(
L01.openStream()));

String L03;
//文字化けする場合はcompileの引数にPattern.UNICODE_CASEも追加
Pattern L04 = Pattern.compile(C01, Pattern.CASE_INSENSITIVE);


FileWriter objFw;
objFw = new FileWriter(C02);
BufferedWriter objBw = new BufferedWriter(objFw);

while ((L03 = L02.readLine()) != null) {
L05 = L04.matcher(L03);
while (L05.find()) {
L00++;
objBw.write(L05.group(1) + "\n");
}
}

L02.close();
} catch (IOException L06) {
System.out.println("ページ読み込み中にエラーが起きました。");
}

System.out.println(L00 + "件のURLを発見しました。");

}
}

コンソールに表示された文字は...
[http://tweetmeme.com/]から、URLを検索...
231件のURLを発見しました。

231件のURLをカウントしているにもかかわらず、ファイルには他のurlで何度やっても8.0 KB (8192 バイト)分のurlしか書き込まれていませんでした。ファイルに書き込まれた最後のurlは途中で途切れています。
書き忘れていましたがOSはLinuxのUbuntu i836です。
よろしくお願いします。

補足日時:2011/01/10 20:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!