什么时候使用流对象?
操作设备上的数据或操作文件的时候可以使用。
字符流
字符流的抽象基类:Reader , Writer。
字符流的理解,由来和作用?
由于很多国家的文字融入进来,比如说中文在编码表中默认占2个字节。而为了按照文字的单位来处理,所以出现了字符流。
由来:早期的字节流+编码表,为了更便于操作文字数据。
作用:为了处理文字数据。
复制文件的原理和代码。
原理:
首先用一个读取流对象和一个文件进行关联,然后用一个写入流对象作为目地的,
为了把读取流中的文件传输到目的地流对象中,我们就提供了一个字符数组,
为了关联这个数组,所以读取流对象有一个read()方法与这个字符数组进行关联,
同理,写入流对象也有一个write()方法与这个字符数组进行关联,
这样2个流对象就相连接了,而这个字符数组就相当于一个中转站。
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 对文本文件进行复制。将c盘的文件复制到d盘中。
* 原理:其实就是一个最简单的读写过程。
* 从c盘源,读取数据,并将读到的数据,写入到目的d盘中。
*/
public class CopyTextFileTest {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
//1,创建一个字符读取流读取与源数据相关联。
fr = new FileReader("demo.txt");
//2,创建一个存储数据的目的地。
fw = new FileWriter("copyDemo.txt");
//3,创建一个字符数组将读取流对象和写入流对象相连接。
char[] buf = new char[1024];
//4,每次读取的长度不一样,所以定义一个变量.
int len = 0;
//5,用循环读取文件中的数据
while((len= fr.read(buf)) != -1) //判断是否读取完没
fw.write(buf,0,len); //为了只读取有效的数据
} catch (Exception e) {
}finally{
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee