Java IO学习笔记:概念与原理

Java IO学习笔记:概念与原理

一、概念

Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。

二、分类

流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕。流分类的方式很多:

1、按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序。

2、按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)。

3、按照功能的不同分,分节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的 一种流,FileInputStream是一个接点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。

其实除了以上三种分类外,还有一些常常听到的一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。当然你也可以创建新的流类型,只要你需要。

三、流分类的关系

不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。这个四个类的关系如下:

 
字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

四、字节流和字符流的相互转换

1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。

2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。

以上知识是学习Java流的根基,对流的操作非常的容易,Java API中提供了丰富的流处理类,API也大差不差,看看文档即可上手。

时间: 2024-12-19 18:41:38

Java IO学习笔记:概念与原理的相关文章

Java IO学习笔记(五)对象流

1.Object流:直接将Object写入或读出. 2.序列化:将Object直接转化成字节流写到硬盘或网络上. 3.如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口,Serializable接口是标记性接口,它并没有任何方法,只是用于标识该类可以被序列化. 4.transient关键字,用于修饰成员变量,表示该成员变量是透明的,与Serializable接口同用,表示序列化的时候不考虑该成员变量.序列化时存的是该成员变量数据类型的默认值. 5.External

Java IO学习笔记(三)转换流、数据流、字节数组流

转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和BufferedWriter,并使用它们的readLine 和 newLine方法. 2.有两种转换流:InputStreamReader.OutputStreamWriter 练习小程序1: package test.io.transfer; import java.io.FileOutputSt

Java IO学习笔记(四)打印流

1.只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出.PrintWriter和PrintStream操作不会抛出异常,数据没打印出来也不会抛异常. 2.System.out.print(Object object)调用的是Object实体类的toString()方法. 3.PrintWriter和PrintStream有自动的flush功能,不需要手动调用flush方法.*这里必须强调一点:P

Java IO学习笔记(一)

一.概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.在两设备间的传输的数据称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,以进行数据操作. 二.流分类 数据类型:字符流和字节流 流方向:输入流和输出流 字节流和字符流区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节. 处理对象不同:字节流能处理所有类型的数据(如图片.rmvb等),字符流只能处理字符类型的数据. 处理纯文本数据,优先使用字符流,此

Java IO学习笔记:File类

File类 在整个IO包了,唯一表示与文件本身有关的类就是File类.使用File类可以进行1创建或删除文件等常用操作.要想使用File类.则首先要观察File类的构造方法,此类的      常用构造方法如下所示:public File(String pathname) 实例化File类的时候,必须设置好路径 No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径的分隔符(windows是“;”) 2 public s

java IO 学习笔记

1.IO的数据源有: 文件 管道 网络  内存缓存 读写方式有字符读写 reader writer ,字节读写 Stream. 2.IO的异常处理: try with resources 模板  其中key要实现Autoclose接口. 3.buffer :为提高磁盘访问速度,开辟了一大块的缓冲区(可一次读取多个字节)从而提高了访问磁盘速度 4.管道:pipe 多用来不同线程之间异步通信.(不要放到一个线程中,不然容易造成死锁)

Java IO学习笔记+代码(2)

原文链接:http://www.faceye.net/search/143858.html 文件操作方法/* * FileOperation.java * * Created on 2006年8月22日, 下午4:25 * * 文件操作方法 */ package study.iostudy;import .*;/* * 有关文件操作方面的方法有如下几种: * boolean createNewFile(); 根据当前的文件对象创建一个新的文件. * boolean mkdir(); 根据当前的文

【DAY12】第十二天集合&泛型&IO学习笔记

hash:散列 ------------------ Hashset集合内部是通过HashMap进行实现的.使用的是HashMap中key部分. 对象在添加进集合中时,首选会对hashcode进行处理(hashcode右移16位和 自身做异或运算)得到一个经过处理的hash值,然后该值和集合的容量进行 &运算,得到介于0和集合容量值之间一个数字.该数字表示着数组的下标. 也就是该元素应该存放在哪个元素中. Map与Collection -------------- Map与Collection在

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------