根据处理的数据类型不同,可以分为:字符流 和字节流;
字符流:Reader Write
字节流:InputStream OutputStream
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。
根据数据流方向不同,可以分为:输入流和输出流 ;
根据功能不同分为:节点流和处理流;
FileReader是Reader子类,文件字符流的读取写个例子:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Test3 {
public static void main(String[] args){
//1.txt中的内容为A
File file=new File("d:/xbj/1.txt");
try(FileReader fr=new FileReader(file)){
char[] cll=new char[(int)file.length()];
fr.read(cll);
for (char c:cll
) {
System.out.println(c);
}
}
catch(IOException e){
e.printStackTrace();
}
}
}
读取结果:
A
举例:字符流写入:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Test3 {
public static void main(String[] args){
File file =new File("d:/xbj/1.txt");
try(FileWriter fw=new FileWriter(file)){
//用字符流的形式把字符串写进文档
String txt="字符流写入";
char[] cs=txt.toCharArray();
fw.write(cs);
}
catch(IOException e){
e.printStackTrace();
}
}
}
字节流读取文件内容:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class TestStream {
public static void main(String[] args) {
try{
File file =new File("d:/xbj/2.txt");
//字节流输入来读取文件内容
FileInputStream fis=new FileInputStream(file);
//字节数组
byte[] all=new byte[(int)file.length()];
fis.read(all);
for (byte b:all
) {
System.out.println(b);
}
//一定要记得关闭
fis.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
文件内容为AB,读取的是ASCII码
扫描二维码关注公众号,回复:
2504253 查看本文章
65
66
字节流向文档写入内容:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestStream {
public static void main(String[] args) {
try{
File file =new File("d:/xbj/2.txt");
//字节流写入
FileOutputStream fos=new FileOutputStream(file);
byte[] all={98,99};
fos.write(all);
for (byte b:all
) {
System.out.println(b);
}
fos.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
缓存流读取数据:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class TestStream {
public static void main(String[] args) {
File file=new File("d:/xbj/2.txt");
//创建文件字符流
//缓存流必须建立在一个存在的流上
try( FileReader fr=new FileReader(file);
BufferedReader bfr=new BufferedReader(fr)){
while(true){
String line=bfr.readLine();
if (null==line)
break;
System.out.println(line);
}
}
catch(IOException e){
e.printStackTrace();
}
}
}
缓存流写入
import java.io.*;
public class TestStream {
public static void main(String[] args) {
File file=new File("d:/xbj/2.txt");
try(
FileWriter fw=new FileWriter(file);
PrintWriter bfw=new PrintWriter(fw);
){
bfw.println("sdfsfd");
bfw.println("czxvf");
}catch(IOException e){
e.printStackTrace();
}
}
}