IO流的使用(一)
java中的IO流真的很重要,但是流的种类又有很多,很难搞的清楚,我们需要慢慢学习,渐渐的熟悉它。
先说字符流吧~
字符流的抽象基类: Reader 和Writer(读和写),他们都是抽象类,abstract修饰的。
字符流–就是用来读写字符的,像中文汉字、英文字母之类。
Writer
Writer(abstract)—OutputStreamWriter(abstract)—FileWriter(实现类)
flush()方法:刷新流对象中缓冲的数据
close()方法:关闭流资源,但是关闭流之前会刷新一次缓冲中的数据
区别:flush()刷新后,流可以继续使用,但是close()刷新后,会将流关闭。
文件的续写
在FileWriter的构造方法中,传递一个参数true,代表不覆盖已有文件,并在已有文件的末尾进行文件的续写。
**关于续写文件的换行
在java中 \n表示换行,在windows中,换行用\r\n。所以文件如果要换行的话,请写入\r\n。
Reader
read()方法:一次读一个字符,而已会自动往下读。读取完毕,返回-1.
demo:文件的复制
package com.bxd.shiba;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileTest {
public static void main(String[] args) {
copy();
}
private static void copy(){
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("F:\\javaworkspaces\\J2SEBase\\src\\com\\bxd\\shiba\\RuntimeTest.java");
fw = new FileWriter("F:\\javaworkspaces\\J2SEBase\\src\\com\\bxd\\shiba\\RuntimeTest_copy.java");
char[] buf = new char[1024];
int len = 0;
if(-1 != (len=fr.read(buf))){
fw.write(buf, 0, len);
}
} catch (Exception e) {
throw new RuntimeException("文件读写失败");
} finally {
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}