JAVA I/O(1)

Java io分类:

基于字节操作的I/O接口:InputStream和OutputStream;
基于字符操作的接口:Writer和Reader
基于磁盘操作的:File。
基于网络操作的:Socket
(socket类并不在java..io下)

读取和写入文件都要调用操作系统提供的接口才能完成,因为磁盘设备是操作系统内管理的。读写分别对应read(),write()两个系统调用,操作系统为了加速I/O,在内核空间采用缓存机制,如果用户程序访问的是同一段磁盘地址空间数据,则操作系统直接从内核缓存中的高速缓存中取出返回给用户程序(前提是高速缓存中有的话,如果没有还是要去磁盘上读取,然后缓存在高速缓存中)。

两种访问文件的方式:

同步访问:在标准访问的方式基础上,只有数据成功写到磁盘时才返回给应用程序成功的标志,性能差但安全性高
异步访问:当访问数据的线程发出请求后,线程会去处理其他事情而不是阻塞等待,当请求的数据返回后继续处理下面的操作。这样可以提高整个程序的效率。

Java访问磁盘文件

文件是操作系统和磁盘驱动器交互的最小单元。当File被指定一个路径描述符时,会返回一个代表这个路径的虚拟对象,可以是一个文件或则是一个路径。那么当真正要读这个文件时,才会去检查这个文件存不存在,当创建一个FileInputStream类对象时,会创建一个FileDescriptor对象(它代表了一个真正存在对象的描述,可以通过调用FileDescriptor.sync())方法将操作系统缓存中的数据刷新到物理磁盘中)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值