2016-05-30 2 views
0

複数行の出力をテキストファイルの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); 
} 

} 
+1

まず、holdText = outputarea.getText();というテキスト全体に、holdText = br.readLine()の最初の行にholdTextを割り当てます。 1行に新しい変数を導入すると、すべてがうまくいくはずです。 – Frank

+2

'd.close();'をwhileループの外側に置くべきです。 – STaefi

+0

@STaefiおそらく答えがあります –

答えて

3

だけDataOutputStreamを使用してファイルの最初の行を書いた後、あなたはそれを閉じているので、あなたは、whileループの完了後にd.close();を置く必要がありますし、それが全体の仕事を全うすることはできません。

あなたも、エラーがコンソールに書いていることがわかります

ファイル

それはあなたのファイルを見つけることができませんので、これはそれが後にあるため反復でだ、ではないですが見つかりませんまず、閉じたストリームに書き込もうとします。最初の行だけが書かれ​​ています。ですから、このようなコード変更:

while ((holdText = br.readLine()) != null) { 
    d.writeBytes(holdText + "\r\n"); 
} 
d.close(); 

また、私が代わりにDataOutputStreamPrintWriterを使用するように助言することができます。次に、writeBytesprintlnメソッドに簡単に変更することができます。このようにして、書き込みする各行に手動で\r\nを追加する必要はありません。

もう一つの良いヒントが使用するtry-with-resourceあなたのストリームのいずれかの方法閉鎖するか、少なくともfinallyブロック(場合には、Java 7以降を使用):

String holdText = outputarea.getText(); 
try (PrintWriter w = new PrintWriter(new File(filename)); 
    BufferedReader br = new BufferedReader(new StringReader(holdText))) { 
    while ((holdText = br.readLine()) != null) { 
     w.println(holdText); 
    } 

} catch (Exception e) { 
     System.out.println("File not found"); 
} 

幸運を。

+0

STaefiさんありがとうございました。コードが正しく動作しています。次回からPrintWriterを使用する方が便利です...もう一度おねがいします! –

+0

喜んで助け;-) – STaefi