Java代码字符流复制文件
由于字节流处理字符时并不方便,于是就有了字符流的产生,字符流是以字符为单位进行读取和写入;但是字符流不像字节流可以写入写出任何文件,但是凡是能用Word文档打开的文件,字符流就适用。
把D盘test.txt文件复制到E盘并命名为hello.txt
此方法利用字符流中 输入流 java.io.Reader() 和 输出流 java.io.Writer()读取和写入文件
public class CopyFile {
public static void main(String[] args) throws Exception {
copyFile();
}
private static void copyFile() throws Exception {
// 创建输入流对象,并给出原文件位置
FileReader fileReader = new FileReader(("D:\\test.txt"));
Writer writer = new FileWriter("E:\\hello.txt");
int red =0;
// fileReader.read()该方法为读取数据,一次读取一个字节;
// 如果字节读取完毕,则该方法输出结果为 -1;
while((red=fileReader.read())!=-1) {
//writer.write 该方法为写入数据,一次写入一个数据
writer.write(red);
}
fileReader.close();
writer.close();
}
}
此代码方法同上,只是多用了char字符数组建立了一个缓冲区,提高了硬盘读取文件的效率
public class CopyFile {
public static void main(String[] args) throws Exception {
copyFile();
}
private static void copyFile() throws Exception {
// 创建输入流对象,并给出原文件位置
Reader reader = new FileReader(("D:\\test.txt"));
// 创建输出流对象,并给出复制到的文件位置
Writer writer = new FileWriter("E:\\hello.txt");
char[] chars = new char[1024*10];
int len =0;
// fileReader.read()该方法为读取数据,一次读取一个字节;
// 如果字节读取完毕,则该方法输出结果为 -1;
while((len=reader.read(chars))!=-1) {
//writer.write 该方法为写入数据,一次写入一个数据
writer.write(chars,0,len);
}
reader.close();
writer.close();
}
}
利用字符缓冲流读取和写入文件,字符缓冲流的作用是一次读取和写入一定长度的数据,避免了硬盘一次一个字符的读取和写入,增强了文件读写的效率
public class CopyFile {
public static void main(String[] args) throws Exception {
copyFile();
}
private static void copyFile() throws Exception {
// 创建输入流对象,并给出原文件位置
Reader reader = new FileReader(("D:\\test.txt"));
// 创建字符缓冲区读取对象
BufferedReader bufferedReader = new BufferedReader(reader);
// 创建输出流对象,并给出复制到的文件位置
Writer writer = new FileWriter("E:\\hello.txt");
// 创建字符缓冲区字符接收对象
BufferedWriter bufferedWriter = new BufferedWriter(writer);
char[] chars = new char[1024*10];
int len =0;
// bufferedReader.read()该方法为读取数据,一次读取一组字节;
// 如果字节读取完毕,则该方法输出结果为 -1;
while((len=bufferedReader.read(chars))!=-1) {
//bufferedWriter.write 该方法为写入数据,一次写入一组数据
bufferedWriter.write(chars,0,len);
}
bufferedReader.close();
bufferedWriter.close();
}
}
以行为单位读取文件
public class CopyFile {
public static void main(String[] args) throws Exception {
copy();
}
private static void copy() throws Exception {
// 创建字符缓冲流读取对象 并添加被复制文件路径
BufferedReader br = new BufferedReader(new FileReader("D:\\readLine.txt"));
// 创建字符缓冲流写入对象 并添加要复制到的文件路径
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\copyLine.txt"));
String lin ;
// br.readLine 此方法用于读取文件,一次读取一行,即便是空格,此方法也能辨识,不退出,继续执行代码
while((lin = br.readLine())!=null) {
// 一次写入一行
bw.write(lin);
// 每写入一行,新创建一行
bw.newLine();
}
// 关闭读取流
br.close();
// 关闭写入流
bw.close();
}
}
以上是关于字符流读写文件的Java代码,亲测有效,至于其中是否有bug,目前还没有发现,欢迎各位朋友指出,一定积极改正,共同学习,共同进步;