複数行の出力をテキストファイルのjTextArea(コード内の "outputarea"という名前)から希望のパスに保存しようとしています。すべてはOKですが、保存されるファイルには出力全体が含まれていませんテキストの最初の行。私は複数の行出力を与えている間に "\ n"を使ってjtextareaの行を壊していますが、このコードでは違いやその他の問題があります。このコードはsaveAsボタンのコードです。作成されました。前もって感謝します!jTextAreaは、BufferedReaderを使用してテキストファイルの最初の行のみを保存しますか?
private void saveAs() {
FileDialog fd = new FileDialog(home.this, "Save", FileDialog.SAVE);
fd.show();
if(fd.getFile()!=null)
{
fn=fd.getFile();
dir=fd.getDirectory();
filename = dir + fn +".txt";
setTitle(filename);
try
{
DataOutputStream d=new DataOutputStream(new FileOutputStream(filename));
holdText = outputarea.getText();
BufferedReader br = new BufferedReader(new StringReader(holdText));
while((holdText = br.readLine())!=null)
{
d.writeBytes(holdText+"\r\n");
d.close();
}
}
catch (Exception e)
{
System.out.println("File not found");
}
outputarea.requestFocus();
save(filename);
}
}
まず、holdText = outputarea.getText();というテキスト全体に、holdText = br.readLine()の最初の行にholdTextを割り当てます。 1行に新しい変数を導入すると、すべてがうまくいくはずです。 – Frank
'd.close();'をwhileループの外側に置くべきです。 – STaefi
@STaefiおそらく答えがあります –