java 通过IO一行一行读写文件
1、通过指定文件的位置,通过IO流进行读写
/**
* 一行一行读写文件
* @param readFileName 被读的文件的绝对路径
* @param writeFileName 被写的文件的绝对路径
*/
public static void writeFileOnLine(String readFileName,String writeFileName){
FileOutputStream fos = null;
OutputStreamWriter osw = null;
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
File file = new File(writeFileName);
fos = new FileOutputStream(file);
osw = new OutputStreamWriter(fos, "UTF-8");
bw = new BufferedWriter(osw);
File f = new File(readFileName);
fis = new FileInputStream(f);
isr = new InputStreamReader(fis, "UTF-8");
br = new BufferedReader(isr);
String line = null;
int i = 0;
while ((line = br.readLine()) != null){
if (!" ".contains(line)){
i++;
System.out.println(i + "-----" + line);
bw.write(line + "\t\n");
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (null != br){
br.close();
}
if (null != bw){
bw.close();
}
if (null != fos){
fos.close();
}
if (null != osw){
osw.close();
}
if (null != isr){
isr.close();
}
if (null != fis){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、读文件,一行一行的读取。
/**
* 一行一行的读文件
* @param fileName 被读的文件的绝对路径
*/
public static void readFileOnLine(String fileName) {
BufferedReader br = null;
InputStreamReader isr = null;
FileInputStream fis = null;
try {
File file = new File(fileName);
fis = new FileInputStream(file);
isr = new InputStreamReader(fis,"UTF-8");
br = new BufferedReader(isr);
String line = null;
int i = 0;
while ((line = br.readLine()) != null){
i++;
if (!" ".contains(line)) {
System.out.println(i + "-----" + line);
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (null != br){
br.close();
}
if (null != isr){
isr.close();
}
if (null != fis){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、测试一下:
public static void main(String[] args) {
String readFileName = "C:\\Users\\xxx\\Desktop\\a.txt";
String writeFileName = "C:\\Users\\xxx\\Desktop\\b.txt";
long start = System.currentTimeMillis();
writeFileOnLine(readFileName,writeFileName);
long end = System.currentTimeMillis();
System.out.println("一共花费时间是: " + (end - start));
}
截图:
4、文件追加,在已有内容的文件尾部追加内容
/**
* 追加文件:使用FileWriter
* @param fileName 被追加的文件的绝对路径
* @param content 追加的内容
*/
public static void appendMethod(String fileName, String content){
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
BufferedWriter writer = new BufferedWriter (
new OutputStreamWriter (
new FileOutputStream (fileName,true),"UTF-8"));
writer.write("\n" + content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}