今天是7/24早早就来了实验室,但师母的那个学生很大声的说话,我从8点忍到了现在,在我忍受怀疑他人品的时候说明我的性格也很是懦弱,我应该早早就提醒让他声音小点,而不是忍受。忍受这种人是可耻的。开始学习吧。
既然在【1】【2】【3】中学习了如何读取文件,如何写入文件,那么相应的就应该编写一个小程序来复制一个文件,复制一个文件需要读取的时候同时将数据写入另一个文件,那么可以想到的是读取文件有两种方式,一种是单个字符的读取,那么相应的写入也是简单的每读到一个字符就写入一个字符;代码如下
public static void main(String[] args) throws IOException {
/*
* 作业:将c盘上的一个文件复制到d盘
* 分析:(复制原理)连读带写,读取c盘文件中的数据, 将这些数据写入到d盘中
* 1.需要读取源
* 2.将读取到的源数据写入目的地
* 3.既然是操作文本数据,使用字符流
*/
//1.读取一个已有的文本文件,使用字符读取流和文件相关联 (在eclipse当前目录指项目目录)
FileReader fr = new FileReader("IO流_2.txt");
//2.创建一个目的,用于存储读到数据
FileWriter fw = new FileWriter("copytext.txt");
//3.频繁的读写操作
int ch = 0; //每次读取一个
while((ch=fr.read())!=-1){
fw.write(ch);
}
//4.关闭流
fr.close();
fw.close();
}
另一种方式是按数组的方式读取,当读的时候应该用fw.writer(buf,0,len);这个函数,代码如下:
public static void main(String[] args) {
/*
* 作业:将c盘上的一个文件复制到d盘
* 分析:(复制原理)连读带写,读取c盘文件中的数据, 将这些数据写入到d盘中
*/
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("IO流_2.txt");
fw = new FileWriter("copytext2.txt");
//创建一个临时容器,用于缓存读取到的字符
char[] buf = new char[BUFFER_SIZE];
int len = 0;
while((len=fr.read(buf))!=-1){
fw.write(buf, 0, len);
}
} catch (Exception e) {
System.out.println("读写失败!");
throw new RuntimeException("读写失败!");
}finally{
//4.关闭流,如果没有做关流的动作删除不了文件
if(fw!=null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fr!=null)
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行都成功了。
那么用一个图像来表示就是