字符流复制Java文件
方法一:
1.需求: 把模块目录下的“ConversionStreamDemo.java”复制到模块目录下的Copy.java
2.思路:
- 根据数据源创建字符输入流对象
- 根据目的地创建字符输出流对象
- 读写数据,复制文件
- 释放资源
package com.characterstream;
import java.io.*;
//复制Java文件
public class CopyJavaDemo01 {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("基础语法 \\ConversionStreamDemo.java"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("基础语法\\Copy.java"));
//一次读取一个字符数组
char[] chs=new char[1024];
int len;
while ((len=isr.read(chs))!=-1){
osw.write(chs,0,len);
}
isr.close();
osw.close();
}
}
方法二(改进版):
1.分析:
-
转换流的名字比较长,常见的操作都是按照本地默认编码实现的,所以为了简化书写转换流提供列对应的子类
-
FileReader:用于读取字符文件的便捷类
FileReader(String fileName)
-
FileWriter:用于写入字符文件的便捷类
FileWriter(String fileName)
-
数据源和目的地的分析
数据源:基础语法\\ConversionStreamDemo.java- - -读数据- - -Reader- - -InputStreamReader- - -FileReader
目的地:基础语法\\Copy.java- - -写数据- - -Writer- - -OutputStreamWriter- - -FileWriter
2.思路:
①根据数据源创建字符输入流对象
②根据目的地创建字符输出流对象
③读写数据,复制文件
④释放资源
package com.characterstream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyJavaDemo02 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("基础语法\\ConversionStreamDemo.java");
FileWriter fw = new FileWriter("基础语法\\Copy.java");
//读写数据,复制文件
char[] chs=new char[1024];
int len;
while ((len=fr.read(chs))!=-1){
fw.write(chs,0,len);
}
fw.close();
fr.close();
}
}