Java IO流主要有以下几种分类方式:
1、按照输入的方向分
输入流:只能从中读取数据,主要以InputStream和Reader作为基类。
输出流:只能向其写数据,主要以OutputStream和Writer作为基类。
2、按照处理数据的单位不同分,
字节流:字节流操作的单元是字节
字符流:字符流操作的单元是字符
字节流和字符流操作方式几乎一样,区别只是数据单元有区别而已。
另外还有节点流和处理流的分类,区别就是在节点流上进行了封装,有了缓冲的功能
java IO流的主要关系如下:
字节流 字符流
输入 InputStream Reader
输出 OutputStream Writer
不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。
一、FileWriter简单操作:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//在磁盘创建文件,如果存在就覆盖。
//true,表示是否在原来的文本追加内容
FileWriter fw = new FileWriter("F:"+File.separator+"test.java",true);
fw.write("xxx");
fw.write("\r\n");
fw.flush();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
二、FileReader简单操作:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
FileReader fr = new FileReader("F:" + File.separator + "test.java");
//加入缓冲字符数组,将读取的数据临时放在数组中
char[] buffer = new char[20];
int length =0;
while((length=fr.read(buffer))!=-1){
System.out.println(new String(buffer, 0, length));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}