↓↓クリックして頂けると励みになります。
【50 | JTimerとJProgressBar】 << 【ホーム】
既に何度か登場していますが、ファイルからテキスト(文字列)を入出力するには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しておいた方が良いでしょう。
Visual Studio Codeで以下のプログラムを作成します。
新規作成 【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); } }
作成したプログラムを実行して動作を確認します。
ファイルのロード、編集、セーブができます。
ファイル名を入力してロードボタンを押せばファイルを読み込むことができます。
~/Desktop/Programming/JP $ javac SwingFileText.java ~/Desktop/Programming/JP $ java SwingFileText
【50 | JTimerとJProgressBar】 << 【ホーム】
↓↓クリックして頂けると励みになります。