java 按行讀寫文件

         因爲經常會在寫小程序中用到java 的 按行讀寫文件,所以在這就把模板站出來。

package com;

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;
import java.util.ArrayList;

public class Main {

	private static ArrayList<String> list = null;
	//獲取對應操作系統的換行符
	private final static String EOL = System.getProperty("line.separator");
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//模擬copy操作
		String file_name = "";
		readForLine(file_name);
		writeForLine(file_name + ".bak");
		
	}
	
	//按行讀取文件file_name,並把每一行的數據存儲在list中
	public static void readForLine(String file_name)
	{
		File file = new File(file_name);
		BufferedReader reader = null;
		
		try {
			reader = new BufferedReader(new FileReader(file));
			String line = null;
			//按行讀,並把每次讀取的結果保存在line字符串中
			while ( (line = reader.readLine()) != null )
			{
				list.add(line);
				System.out.println(line);
			}
			//關閉流
			reader.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			//當由於異常情況,上面關閉流程序沒有執行時
			if ( reader != null )
			{
				try
				{
					reader.close();
				}catch(IOException e)
				{
					e.printStackTrace();
				}
			}
		}
	}
	
	//按行寫文件,將list中的字符串,按行寫入file_name文件中
	public static void writeForLine(String file_name)
	{
		File file = new File(file_name);
		BufferedWriter writer = null;
		
		try {
			writer = new BufferedWriter(new FileWriter(file));
			for ( String elem: list )
			{
				writer.write(elem + EOL);//按行寫文件,後面追加行分隔符EOL
			}
			//關閉流
			writer.close();
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			if ( writer != null )
			{
				try {
					writer.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章