文件传输基础—Java IO流 FileInputStream 的运用

时间:2022-10-16 19:37:32

1、字节流

1)包含两个抽象类:InputStream 、 OutputStream

     其中,InputStream抽象了应用程序读取数据的方式,而OutputStream抽象了应用程序写出数据的方式

2)EOF = end,读到-1就是读到结尾了;

3)输入流的基本方法

int b =in.read();读取一个字节无符号的填充到int的低8位,读到-1就结束(EOF)

in.read(byte[] buf);

in.read(byte[] buf,int start,int size);

4) 输出流的基本方法

out.write(int b); 写出一个byte到流,b的低八位

out.write(byte[] buf); 将buf的字节数组都写入到流

out.write(byte[] buf, int start,int size);


5) FileInputStream---->具体实现了在文件中读取数据

6)FileOutputStream---->具体实现了向文件中写出byte类型数据的功能

7) DataOutputStream/DataInputStream

对“流”功能的扩展,可以更加方便的读取int,long,字符等类型数据

DataOutputStream

writeInt()/writeDouble()/writeUTF()

8) BufferedInputStream & BufferedOutputStream

这两个流类为IO提供了带缓冲区的操作,一般打开文件写入和读取操作时,都会加上缓冲,这种操作提高了IO的性能

假设在应用程序中将数据写入文件,相当于将一缸水倒入另一个缸中:

FileOutputStream---> write():相当于将水一滴一滴地倒入缸中;

DataOutputStream--->writeXxx():相当于将水一瓢一瓢地倒入缸中;

BufferedOutputStream--->writeXxx():相当于先用瓢将水放入桶(缓冲区)中,然后再放入缸中,因此性能就提高了。


2、字符类

1)编码问题

2)认识文本和文本文件

Java中的文本(char)是16位的无符号的整数,是字符的Unicode编码(双字节编码)

文件是byte byte byte....的数据序列

文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte数据存储集合。

3)字符流(Reader Writer)——>操作的大都是文本文本文件

字符处理,一次处理一个字符;

字符的底层仍然是基本的字节序列

字符流的基本实现

InputStreamReader  完成byte流解析为char流,按照编码解析

     OutputStreamWriter  提供char流到byte流,按照编码处理


FileReader/FileWrite 简单数据读取和输入


字符流过滤器

BufferedReader ---->readLine 一次读一行;

BufferedWrite/PrintWrite---->一次写一行