因爲經常會在寫小程序中用到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();
}
}
}
}
}