package utils;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
/**
*字符流Reader|Writer 常用操作:
*/
public class ReaderWriterUtils {
/**使用 字符流:
* InputStreamReader|OutputStreamWriter
* 实现文件的拷贝
* @return
* @param srcFile, 源文件,即:读哪个文件
* @param destFile,目标文件,即:读完之后写入到哪个文件
* @exception IOException
* @{@link Exception} FileNotFoundException
*/
public static void copyByReaderWriter(
File srcFile,
File destFile)
throws IOException{
//1.判断目录
if(!srcFile.exists()||!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"参数有误");
}
if(!destFile.exists()||!destFile.isFile()){
//1.创建 d:\\reader\\日记.txt
// e:\\reader\\日记.txt
destFile.getParentFile().mkdirs();//创建目录,不写parent会创建“日记.txt”文件夹
destFile.createNewFile();//创建文件
}
//2. 构建 ISR OSW 对象
InputStreamReader isr = new
InputStreamReader(new
BufferedInputStream(new
FileInputStream(srcFile)));
InputStreamReader isr1 = new
InputStreamReader(new
FileInputStream(srcFile));
OutputStreamWriter osw = new
OutputStreamWriter(new
FileOutputStream(destFile));
//3. 读内容 写内容
/*方法1:一个字符一个字符读
* int i ;//一个字符
while((i=isr.read())!=-1){
System.out.println((char)i);
}*/
char[] ch = new char[1024*20];
int i ;
while((i=isr.read(ch,0,ch.length))!=-1){
osw.write(ch);
osw.flush();
System.out.println("write ok...");
}
//4. 关闭流
isr.close();
osw.close();
}
/**
*使用 FileReader | FileWriter
*实现文件的拷贝 工作
*/
public static void copyByFileReaderWriter(
File srcFile,
File destFile) throws IOException{
//1.判断 路径
//2. 构建 FileReader FileWriter
FileReader fr = new
FileReader(srcFile);
FileWriter fw = new
FileWriter(destFile);
//3. 读内容,写内容
char[] ch = new char[1024*10];
int i;
while((i=fr.read(ch))!=-1){
fw.write(ch);//将ch写入文件中
fw.flush();
System.out.println("write ok ");
}
//4. 关闭流
fw.close();
fr.close();
}
/**
* 使用 BufferedReader | BufferedWriter
* 实现 文件的拷贝
*/
public static void copyByBuffered(
File srcFile,
File destFile) throws IOException{
//1.
//2. 构建 BufferedReader对象
BufferedReader br = new
BufferedReader(new
FileReader(srcFile));
BufferedWriter bw = new
BufferedWriter(new
FileWriter(destFile));
PrintWriter pw = new
PrintWriter(destFile);
//3. 读(一 行)
String str;
while((str=br.readLine())!=null){
pw.println(str);//向
//bw.write(str);
//添加换行
//bw.newLine();
//bw.flush();
pw.flush();
System.out.println("write ok...");
//System.out.println(str);
}
//bw.close();
pw.close();
//4. 关闭流
br.close();
}
}