IO流学习(Java)(一)
学习笔记,主要内容来自链接
1.什么是IO
通过数据流,为序列化和文件系统提供输入和输出。
IO又分为流IO(java.io)和块IO(java.nio)
流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。
2.流的基本概念
在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?
在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:
标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据从外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。
流的分类:
根据流向分为输入流和输出流
根据传输数据单位分为字节流和字符流
- 字节流:数据流中最小的数据单元是字节
- 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节(无论中文还是英文都是两个字节)。
3.特别的流
转换流:转换流只有字节流转换为字符流,因为字符流使用起来更方便,我们只会向更方便使用的方向转化。如:InputStreamReader与OutputStreamWriter。
缓冲流:有关键字Buffered,也是一种处理流,为其包装的流增加了缓存功能,提高了输入输出的效率,增加缓冲功能后需要使用flush()才能将缓冲区中内容写入到实际的物理节点。但是,在现在版本的Java中,只需记得关闭输出流(调用close()方法),就会自动执行输出流的flush()方法,可以保证将缓冲区中内容写入。
对象流:有关键字Object,主要用于将目标对象保存到磁盘中或允许在网络中直接传输对象时使用(对象序列化),具体可参看博客Java序列化与反序列化。
注意:1、程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源。如果不关闭该资源,那么磁盘的文件将一直被程序引用着,不能删除也不能更改。所以应该手动调用 close() 方法关闭流资源
Java IO 流的整体架构图:
标准输入,输出流
java系统自带的标准数据流:java.lang.System:
- 标准输出流 System.out
System.out向标准输出设备输出数据,其数据类型为PrintStream。方法:
Void print(参数)
Void println(参数)
2)标准输入流 System.in
System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数 据类型为InputStream。方法:
int read() //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束。
int read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数
3)标准错误流
System.err输出标准错误,其数据类型为PrintStream。
IO流学习(Java)(一)相关推荐
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- Java IO流学习总结八:Commons IO 2.5-IOUtils
Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...
- Java IO流学习总结七:Commons IO 2.5-FileUtils
Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...
- Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
Java IO流学习总结六:ByteArrayInputStream.ByteArrayOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ar ...
- Java IO流学习总结二:File
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自[赵彦军的博客] Java IO流学习总结一:输入输出流 J ...
- Java IO流学习总结(一)—— IO流分类和常用IO流汇总
Java IO流学习总结(一)-- IO流分类和常用IO流汇总 IO流的分类: - 按流向分类:输入流.输出流 - 按操作对象分类:字节流.字符流 - 按功能分类:节点流.处理流 IO流的设计模式为装 ...
- File,字符集基础知识,IO流学习(一)
File File类在包java.io.File下.代表操作系统的文件对象(文件.文件夹). File类提供了诸如:定位文件,获取文件本身的信息.删除文件.创建文件(文件夹)等功能. File对象可以 ...
- 【Java网络编程与IO流】Java之Java Servlet详解
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
最新文章
- 程序员效率低下的35个坏习惯
- java实现上传功能吗_Java实现文件上传功能
- Swift 本地推送通知UILocalNotification
- 怎么判断间隙过渡过盈配合_尺寸公差配合与装配方法
- Windows10 编译 Open3D 时出现 error C2220: 以下警告被视为错误 (编译源文件
- gba徽章机器人_徽章战士GBA攻略
- 关于清单,有几点我觉得比较重要。
- RedisTemplate设置过期时间
- CentOS6.X安装QQ2012
- python编码规范简单总结
- ubuntu 安装vnc_vnc4server arm架构
- 如何通过 WinUSB 功能访问 USB 设备
- CSDN如何上传gif图片
- iMeta | 南京医科大学孔祥清团队创建前瞻性多组学纵向原发高血压队列eHypertension...
- 聚乙烯醇(PVA)/壳聚糖(CTS)/氧化石墨烯(GO)水凝胶吸附和解吸实验(供应PNIPA/膨润土复合/聚乙烯醇/魔芋胶复合/HAP纳米纤维/GelMA复合丝素蛋白(SF)复合水凝胶等)
- win10所有浏览器打开一段时间后会自动关闭-未解决
- 图像和base64的转换 uniapp开发
- 3500字归纳总结:一名合格的软件测试工程师需要掌握的技能大全
- 发生在动物身上的哲理小故事
- 公司出路:与速达ERP合作设想
热门文章
- 跟我20天学Java:01-计算机基础以及JDK、IDEA等安装详解
- html把一张图片动态的代码,AI不仅会P图了,还能让照片“动起来”!
- c语言 字符串switch,C++中如何对字符串进行switch
- 云服务器操作系统 版本选择,云服务器操作系统 版本选择
- 虚函数 虚继承 抽象类
- HTML5之10 __使用 Canvas API创建 热点图
- 免费linux脚本下载地址,shell脚本 下载|Linux shell脚本 v免费版下载 - D9下载站
- IntelliJ IDEA 快捷键 Mac版(个人自用最新版)
- 判断js中对象的类型
- 浅谈用户行为分析(一)