Java IO
来源:互联网 发布:西地那非淘宝 编辑:程序博客网 时间:2024/06/05 15:47
Java IO
吐槽
工作需要使用java IO,但是让人晕头转向,简直复杂二字形容;
听说很多人因为这个放弃java了,又是stream又是reader,还有file 哈哈,不像c语言一个fopen()就可以解决一大堆问题。
InputStream、OutputStream
处理字节流的抽象类
InputStreamReader OutputStreamWriter
处理字符流的抽象类,它们所操纵的基本单位是char类型。在字节和字符之间的桥梁就是编码格式。
InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.
OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.
BufferedReader BufferedWriter
BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
BufferedWriter 由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
FileOutputStream
对文件操作方面,文件通道FileChannel提供了与其它通道之间高效传输数据的能力,比传统的基于流和字节数组作为缓冲区的做法,要来得简单和快速。
FileInputStream: is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader
同步并阻塞 (I/O 方法)
I/O 的局限是它是面向流的、阻塞式的、串行的一个过程。
每个连接启动一个线程,tcp 连接,读写数据都是阻塞的,大量浪费了 CPU 的时间片和线程占用的内存资源,瓶颈在于不能处理过多的连接。
同步非阻塞 (NIO 方法,Java 1.4 引入)
解决blocking I/O 的瓶颈,线程数和连接数没有关系;
面向缓冲的、非阻塞;
它以块为基本单位处理数据。在 NIO 中,最为重要的两个组件是缓冲 Buffer 和通道 Channel。Channel 是一个双向通道,即可读,也可写。Stream 是单向的。
异步非阻塞 (AIO 方法,JDK7 发布)
使用 Buffer 读写数据一般遵循以下四个步骤:
1.写入数据到 Buffer;
2.调用 flip() 方法,从写模式切换到读模式;
3.从 Buffer 中读取数据;
4.调用 clear() 方法或者 compact() 方法,清空缓冲区。
- 【Java-IO】IO入门
- Java IO:IO框架
- 【IO】java IO 总结
- java IO
- IO.java
- JAVA IO
- JAVA IO
- java IO
- java io
- JAVA IO
- java IO
- java IO
- java io
- java io
- java io
- java IO
- java IO
- java io
- P2768 珍珠项链
- 2017.11.02【NOIP提高组】冲刺A组 总结
- 搭建python 环境_Eclipse
- 【Tensorflow实战计算机视觉】 之 MNIST数据集
- jacoco 介绍 与offline 模式
- Java IO
- 67-经典问题解析五
- 【高德地图API】如何解决坐标转换,坐标偏移?
- 第二弹、window下配置redis的一主二从三哨兵模式
- Spring Boot之No session repository could be auto-configured, check your configuration问题解决
- [App] rhel7 下 Weblogic 12C 安装
- 知名互联网公司校招中常见的算法题
- 背包六问
- 输出倒正三角形