ますFileWriterクラスのコンストラクタに書き込むファイルのパスを指定し、FileWriterインスタンスを作成します。
つぎにBufferedWriterクラスのコンストラクタにFileWriterインスタンスを指定し、BufferedWriterインスタンスを作成します。
BufferedWriterクラスのwriteメソッドを使用し、バッファに文字列を書き込んでいきます。
BufferedWriterクラスのflushメソッドを使用し、ファイルに書き込みを行います。
最後に使い終わったBufferedWriterはcloseメソッドを使用して、ファイルを閉じます。
closeメソッドでもflushメソッドが呼ばれます。
またBufferedWriterクラスのnewlineメソッドはOSの標準改行文字を出力します。
package FileAccess; import java.awt.BorderLayout; import java.awt.Button; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class FileWriteSample02 extends Frame implements ActionListener{ private static final long serialVersionUID = 1L; public static void main(String args[]){ new FileWriteSample02(); } Frame frm = this; TextArea txtBody; Button btnSave; public FileWriteSample02(){ this.setTitle("FileWriteSample02"); this.setSize(300,300); txtBody = new TextArea(); this.add(txtBody,BorderLayout.CENTER); btnSave = new Button("Save"); btnSave.addActionListener(this); Panel pnl = new Panel(); pnl.add(btnSave); this.add(pnl,BorderLayout.SOUTH); this.setVisible(true); } public void actionPerformed(ActionEvent ev){ SaveFile(); } /* * ファイルを保存します。 */ private void SaveFile(){ //名前を付けて保存ダイアログを表示します。 String path = null; FileDialog fd = new FileDialog(this , "名前を付けて保存" , FileDialog.SAVE); try{ fd.setVisible(true); if (fd.getFile() != null){ path = fd.getDirectory() + fd.getFile(); } }finally{ fd.dispose(); } //ファイルパスがnullの場合は処理を中止します。 if (path == null){ return; } //テキストエリアの内容をファイルに書き込みます。 FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter(path); bw = new BufferedWriter(fw); bw.write(txtBody.getText()); bw.newLine(); bw.append("追加書き込み"); bw.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if (bw != null){ bw.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
PrintWriterクラスを使用する
PrintWriterクラスのprintメソッドやprintlnメソッドを使用してファイルへの書き込みを行います。
BufferedWriterクラスのwriteメソッドは、引数として文字列しか受け取れませんが
PrintWriterクラスのprintメソッドや、printlnメソッドは引数として文字列以外にもint型やboolean型などのプリミティブ型を受け取ることができ、それをそのまま文字列として出力します。
printlnメソッドの場合は最後に改行を行います。
また、PrintWriterクラスのcloseメソッドは例外をスローしません。
package FileAccess; import java.awt.BorderLayout; import java.awt.Button; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class FileWriteSample03 extends Frame implements ActionListener{ private static final long serialVersionUID = 1L; public static void main(String args[]){ new FileWriteSample03(); } Frame frm = this; TextArea txtBody; Button btnSave; public FileWriteSample03(){ this.setTitle("FileWriteSample03"); this.setSize(300,300); txtBody = new TextArea(); this.add(txtBody,BorderLayout.CENTER); btnSave = new Button("Save"); btnSave.addActionListener(this); Panel pnl = new Panel(); pnl.add(btnSave); this.add(pnl,BorderLayout.SOUTH); this.setVisible(true); } public void actionPerformed(ActionEvent ev){ SaveFile(); } /* * ファイルを保存します。 */ private void SaveFile(){ //名前を付けて保存ダイアログを表示します。 String path = null; FileDialog fd = new FileDialog(this , "名前を付けて保存" , FileDialog.SAVE); try{ fd.setVisible(true); if (fd.getFile() != null){ path = fd.getDirectory() + fd.getFile(); } }finally{ fd.dispose(); } //ファイルパスがnullの場合は処理を中止します。 if (path == null){ return; } //テキストエリアの内容をファイルに書き込みます。 FileWriter fw = null; BufferedWriter bw = null; PrintWriter pw = null; try { fw = new FileWriter(path); bw = new BufferedWriter(fw); pw = new PrintWriter(bw); pw.println(txtBody.getText()); pw.println(10); pw.println(true); pw.println("文字列"); pw.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if (pw != null){ pw.close(); } } } }
0 件のコメント:
コメントを投稿