tookunn’s diary

主に競技プログラミング関係

Java テキストを読み込み、書き込むサンプルプログラム

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class ReadWriteFile
{
	File toReadFile = null;
	File toWriteFile = null;

	FileReader fileReader = null;
	FileWriter fileWriter = null;

	BufferedWriter bufferWriter = null;
	BufferedReader bufferReader = null;


	public static void main(String[] args)
	{
		ReadWriteFile readFile = new ReadWriteFile();
		readFile.readAndWrite();
	}

	public void readAndWrite()
	{
		toReadFile = new File("toRead.txt");
		toWriteFile = new File("toWrite.txt");
		
		try
		{
			fileReader = new FileReader(toReadFile);
			fileWriter = new FileWriter(toWriteFile);

			bufferWriter = new BufferedWriter(fileWriter);
			bufferReader = new BufferedReader(fileReader);

			String readString = null;
			while((readString = bufferReader.readLine()) != null)
			{
				bufferWriter.write(readString);
				bufferWriter.newLine();
			}

			bufferWriter.flush();
		} catch (FileNotFoundException e)
		{
			//例外発生時の処理
			e.printStackTrace();
		} catch (IOException e)
		{
			//例外発生時の処理
			e.printStackTrace();
		}finally
		{
			if(bufferReader != null)
			{
				try
				{
					bufferReader.close();

				} catch (IOException e)
				{
					//例外発生時の処理
					e.printStackTrace();
				}
			}

			if(bufferWriter != null)
			{
				try
				{
					bufferWriter.close();
				} catch (IOException e)
				{
					//例外発生時の処理
					e.printStackTrace();
				}
			}
		}
	}
}

BufferedReaderやBufferedWriterでclose()をするとFileReaderとFileWriterもclose()したことになるらしい。
あと、当たり前かもですがfinallyでclose()するようにしています。
tryの中で例外が発生した時にちゃんとファイルをクローズできるように。