二进制i o 文件i o java_Java 文本与二进制 I/O 总结(Java 流 Stream、文件 File 和 IO)文本 I/O 与二进制 I/O二进制 I/O 不涉及编码和解码,因此...

Java 文本与二进制 I/O 总结(Java 流 Stream、文件 File 和 IO)

文本 I/O 与二进制 I/O

二进制 I/O 不涉及编码和解码,因此更高效

文本 I/O 建立在二进制 I/O 的基础之上,它提供一层抽象,用于字符层次自动进行的编码和解码

Java 的类文件存储为二进制文件。因为二进制文件与主机编码方案无关,可移植,在任何机器上的 Java 程序可以读取 Java 程序创建的二进制文件。

流 (stream) 的概念源于 UNIX 中管道 (pipe) 的概念。在 UNIX 中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等

形象的比喻:水流 文件 ——– 程序,文件和程序之间连接一个管道,水流就在之间形成了,自然就有方向,可以流进,也可以流出,即 流 就是一个管道里面有流水,这个管道连接了文件和程序

数据流分类

流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种:字节流:数据流中最小的数据单元是字节

字符流:数据流中最小的数据单元是字符, Java 中的字符是 Unicode 编码,一个字符占用两个字节1

2

3字节流 字符流

输入流 InputStream Reader

输出流 OutputStream Writer

2

3

输入流 InputStream Reader

输出流 OutputStream Writer

Java 的字符流,采用的是 Unicode 标准,16 位,两个字节

reader 是所有读取字符串输入流的祖先,而 writer 是所有输出字符串输出流的根类。

I/O 概览

Java.io 包中最重要的就是 5 个类和 1 个接口:类:File OutputStream InputStream Writer Reader

接口:Serializable

I/O 层次

分为 3 层

09b87a2777b807b93df6c389f46c3414.png

09b87a2777b807b93df6c389f46c3414.png1

2

3

4

5

61. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等

2. InputStream(字节流,二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征

3. OutputStream(字节流,二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征

4. Reader(字符流,文本格式操作):抽象类,基于字符的输入操作

5. Writer(字符流,文本格式操作):抽象类,基于字符的输出操作

6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作

2

3

4

5

6

2. InputStream(字节流,二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征

3. OutputStream(字节流,二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征

4. Reader(字符流,文本格式操作):抽象类,基于字符的输入操作

5. Writer(字符流,文本格式操作):抽象类,基于字符的输出操作

6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作

I/O 流

java.io 包里有 4 个基本类:InputStream、OutputStream 及 Reader、Writer 类,它们分别处理字节流和字符流,其他流都是由这 4 个派生出来的:

b9ef1eadf6e4ce6b9e2de8fb345e0725.png

InputStream 类和 OutputStream 类

InputStream 为字节输入流,它本身为一个抽象类,必须依靠其子类实现各种功能,此抽象类是表示字节输入流的所有类的超类。继承自 InputStream 的流都是向程序中输入数据的,且数据单位为字节(8bit)

OutputStream 和 InputStream 是相对应的

FileInputStream 和 FileOutputStream

一个流被定义为一个数据序列,输入流用于从源读取数据,输出流用于向目标写数据FileInputStream

FileInputStream 用于从文件读取数据,它的对象可以用关键字 new 来创建

有多种构造方法可用来创建对象:可以使用字符串类型的文件名来创建一个输入流对象来读取文件

1InputStream f = new FileInputStream("C:/kt");

也可以使用一个文件对象来创建一个输入流对象来读取文件

1

2File f = new File("C:/kt");

InputStream out = new FileInputStream(f);

2

InputStream out = new FileInputStream(f);FileOutputStream

该类用来创建一个文件并向文件中写数据

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件

有两个构造方法可以用来创建 FileOutputStream 对象

2

OutputStream f = new FileOutputStream(f);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值