テキストファイルの読み込みと保存

ファイルダイアローグでテキストファイルを選択して、読み込み表示させます。

また、読み込んだテキストファイルを編集したものを保存できるようなプログラムをつくります。

 

コードを以下の通りです。

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;

public class Hello extends JFrame
{
	private JPanel pn;
	private JButton bt1;
	private JButton bt2;
	private JLabel lb;
	private JTextArea ta;
	private JScrollPane sp;
	
	public static void main(String[] args)
	{
		Hello hl=new Hello();
	}
	public Hello()
	{
		super("テキストエディタ");
		
		lb=new JLabel("ファイルを選択してください");
		ta=new JTextArea();
		sp=new JScrollPane(ta);
		bt1=new JButton("読込");
		bt2=new JButton("保存");
		pn=new JPanel();
		
		pn.add(bt1);
		pn.add(bt2);
		
		add(lb,BorderLayout.NORTH);
		add(sp,BorderLayout.CENTER);
		add(pn,BorderLayout.SOUTH);
		
		bt1.addActionListener(new BtnActionListener());
		bt2.addActionListener(new BtnActionListener());
		addWindowListener(new WindowListener());
		
		setSize(300,300);
		setVisible(true);
	}
	class BtnActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			//ファイルダイアローグ
			Container cnt=getContentPane();
			JFileChooser fc=new JFileChooser();
			//拡張子の設定
			FileFilter filter=new FileNameExtensionFilter("テキストファイル","txt");
			fc.addChoosableFileFilter(filter);		//CSVファイルを追加
			fc.setFileFilter(filter);				//はじめのフィルタをCSVに設定する
			fc.setAcceptAllFileFilterUsed(false);	//すべてのファイルを選択できないようにする
			int res;
			if(e.getSource()==bt1)
			{
				res=fc.showOpenDialog(cnt);	//ファイルダイアローグをコンテナへ表示
			}else if(e.getSource()==bt2)
			{
				res=fc.showSaveDialog(cnt);	//ファイルダイアローグをコンテナへ表示
			}else
			{
				return;
			}
			if(res!=JFileChooser.APPROVE_OPTION)
			{
				return;
			}
			File fl=fc.getSelectedFile();
			try{
				if(e.getSource()==bt1)
				{
					BufferedReader br=new BufferedReader(new FileReader(fl));
					ta.read(br,null);
					br.close();
				}else if(e.getSource()==bt2)
				{
					BufferedWriter bw=new BufferedWriter(new FileWriter(fl));
					ta.write(bw);
					bw.close();
				}
			}catch(Exception ex)
			{
				ex.printStackTrace();
			}
		}
	}
	class WindowListener extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			System.exit(0);
		}
	}
}

読み込みを押せば、指定したテキストファイルを読み込みます。

そして、書き込みを押せば、保存が可能です。

BufferedReader br=new BufferedReader(new FileReader(fl));
ta.read(br,null);
br.close();

で、指定したファイルを読み込み、テキストエリアへ表示しています。

BufferedWriter bw=new BufferedWriter(new FileWriter(fl));
ta.write(bw);
bw.close();

で、テキストエリアの文字を保存しています。

著者:安井 真人(やすい まさと)