首先流是FIFO一种的数据结构,相当于File->内存,内存->File。
分类及创建流的方法
(一)按照流向分类
(1)输入流 java.io.InputStream
//1.先创建输入流管道in
InputStream in= new FileInputStream("d://abc.txt");
//2.再输入内存之前需要在内存中创建缓存数组,需要在数组中读取内容
byte[] buf=new byte[4];
//3.读取文件内容,调用.read()方法
in.read(buf);
//4.查看数组内容需要将数组转换成字符串类型
System.out.println(new String(buf));
(2)输出流 java.io.Outputstream
//1.先创建输出流out,只能用OutputStream的子类
OutputStream out= new FileOutputStream("d:/xyz.txt");
//2.从内存中往硬盘中输出:输出内容调用.write()方法 .getByte()
on.wtrite("abcdefg".getBytes());
(二)按照处理单元分类
(1)字节流 FileInpurStream/FileoutputStream
字节流就是将文件内容转换成字节的形式进行传输,因为1个字节等于8个二进制数,
所有字节流可以传输任何数据类型的。
(2)字符流 Reader/Writer
底层是16位的Unicode的编码,只适用于处理字符,文本文件,处理效率相当于字节流高一点
(3)其他流
注意:
1.InputStream/OutputStream/reader/writer 都是抽象类不能直接使用,需要使用其子类例如
FileInputStream来创建
2.在流中查看文件大小 in.available()方法
3.在文件中查看大小 File.length()方法