<<前 [TOP]
既に何度か登場していますが、ファイルからテキスト(文字列)を入出力するにはjava.ioパッケージのFileReader/FileWriterを使用します。
インスタンスを生成するにはString/File/FileDescriptorを引数として与えます。
また、通常はテキストを効率よく扱うためにBufferReader/BufferWriterを使用します。
BufferedReader/BufferedWriterは引数にReader/Writerをとります。
java.lang.Object +--java.io.Reader(あるいはWriter) +--java.io.BufferedReader(あるいはBufferedWriter) +--java.io.InputStreamReader(あるいはOutputStreamWriter) +--java.io.FileReader(あるいはFileWriter)
読み書きの準備は以下のようにすればよいですが、実際には「IOException」の例外処理が必要になります。
//読み込み準備 BufferedReader read = new BufferedReader(new FileReader("ファイル")); //書き込み準備 BufferedWriter writer = new BufferedWriter(new FileWriter("ファイル"));
読み込み・書き込みの具体的なメソッドはいくつもありますが今回は読み込みではBufferedReaderのreadLine()メソッドを、書き込みではWriterクラスのwrite(String)メソッドを利用します。
読み書きいずれの処理も終了したらファイルはcloseしておいた方が良いでしょう。
以下のサンプルプログラムを作成してみましょう。
【SwingFileText.java】
/** * テキストのロードとセーブ */ import java.io.*; import javax.swing.*; import java.awt.event.*; public class SwingFileText implements ActionListener { private JPanel panel; private JButton loadButton, saveButton; private JTextField textField; private JTextArea textArea; private JScrollPane sp; /** コンストラクタ */ public SwingFileText() { // 画面構成 panel = new JPanel(); loadButton = new JButton("Load"); saveButton = new JButton("Save"); textField = new JTextField(10); panel.add(loadButton); panel.add(saveButton); panel.add(textField); textArea = new JTextArea("", 10, 40); //10行*40桁 sp = new JScrollPane(textArea); //イベント通知の登録 loadButton.addActionListener(this); saveButton.addActionListener(this); } /** ボタンが押された時の処理 */ public void actionPerformed(ActionEvent evt) { String str = evt.getActionCommand(); if(str.equals("Load")) { load(textField.getText()); } else if(str.equals("Save")) { save(textField.getText()); } } /** 指定ファイルをロードする */ public void load(String file) { try { String line; //文字列としてファイルから読み込み BufferedReader read = new BufferedReader(new FileReader(file)); //JTextAreaをクリアしてから表示 textArea.setText(null); //読み込んだデータをJTextAreaへ表示 while((line = read.readLine()) != null) { textArea.append(line + "\n"); } read.close(); } catch (IOException ex) { System.err.println(ex); } } /** 指定ファイルへセーブする */ public void save(String file) { try { //文字列としてファイルへ書き込み BufferedWriter write = new BufferedWriter(new FileWriter(file)); write.write(textArea.getText()); write.close(); } catch(IOException ex) { System.err.println(ex); } } /** main() */ public static void main(String[] args) { SwingFileText test = new SwingFileText(); JFrame frame = new JFrame("FileText"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(test.panel, "Center"); //パネルを配置 frame.getContentPane().add(test.sp, "South"); frame.pack(); frame.setVisible(true); } }
サンプルプログラムを実行してみましょう。
ファイルのロード、編集、セーブができます。
↓↓クリックして頂けると励みになります。