5.Java IO在Android中的应用

面试问的也很少

目的:
扎实的Java基础:
在对象序列化/Json解析/XML解析
zip压缩均需要以I/O作为其基础
处理底层数据业务的时候

Javal/0概要设计
装饰设计模式
1/0学习的关键方法

1
2
3
4
DataOutputstream out = new DataOutputstream( //文件序列  负责数据格式
new BufferedOutputStream( //缓存 让文件读取的速度更快 减少对磁盘的访问(如果没有Buffer就是一个一个字节访问磁盘 使用Buffer可以一块一块访问)
new FileOutputstream( //负责把文件变成一个流
new File(file)));

这种嵌套的原理是什么?

DataOutputStream 输出流 —— 对应 Write 写出
从内存输出到打印设备/硬盘文件系统中

InputStream 输入流 —— 对应 Read 读入
读入到内存中

相对于内存来说的:读入 写出

Data 就是文件的序列
数据会有自己的类型 Boolean类型 Byte类型 Char、Short、Int、Long
文件会有对应的格式,所以可以将不同类型的数据写到文件里来

43
BufferedInputStream 如何提升性能?

BufferedWriter Buffer是一个缓冲区,为什么要用BUFFER呢?

答案:
如果你直接用stream或者writer,你的硬盘可能就是读一个字符或者一个字节 就去读写硬盘一次,IO负担巨大。
可是你用了Buffer,你的硬盘就是读了一堆数据之后,读写一下硬盘,这样对你硬盘有好处。


IO跟NIO有什么区别吗?

IO一般就是讲IO流了,IO流主要是从磁盘or其他机子上面去读取or写入数据,当然除了磁盘,我们的网络、内存这都可以作为IO流数据的来源or目的地

java里面也提供了字节流or字符流这种方式,实现对数据流的操作

如果是面向网络,java里面也提供了TCP\IP协议的封装的这种接口,比如说Socket来实现,通过这种方式我们就可以实现这个数据的网络传递or网络传输,那基于Socket的IO通讯,它其实就是阻塞IO,BIO

什么叫做阻塞IO呢,就是一旦某个连接处于这种阻塞状态,那么后续的连接倒要等待,要等待它完成对应的工作任务之后,服务器端才会去相应,处理其他的IO请求

NIO

IO是JDK1.4之前的版本,NIO1.4之后的一个新的特征,是一种新的IO机制,这个就是非阻塞式的了,相比于传统IO,这个NIO的效率就会做了很大的优化,比如说它加了一些核心的组件,又提供了非阻塞的这种特征。所以通过NIO进行网络数据的传递的时候,即便是当前的这个IO操作并没有完成,服务器端也不会去阻塞当前的这个连接,后面会继续跟进,并且处理的连接数量就会相对比BIO或者IO要更多一些

他们两个直接的区别,站在网络IO的这个角度上面来讲是很形象的,前者是阻塞IO,后者是非阻塞IO

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Annie
  • Visitors: | Views:

嘿嘿 请我吃小蛋糕吧~

支付宝
微信