IO总结
java中IO总结
IO指的是一组有顺序的、有起点的(程序),有终点的(外部设备)字节数据的集合,是对数据传输的抽象
文件
文件分类
文件分为:文本文件和二进制文件
eg. 十进制199 文本文件 ‘1’ ‘9’ ‘9’ 二进制文件 1100 0111
File类
File类的创建
File类可以通过文件路径来创建File实例
File file = new File("pathName");
其中路径分为绝对路径和相对路径
绝对路径:C://xxx/xxx/xxx /User/xxx
相对路径:.表示当前目录 …表示上一级目录
file中的方法
1)方法
boolean exists 表示当前路径是否存在
boolean isFile 判断当前路径是否是文件
boolean isDirectory 判断当前路径是否是一个文件夹
boolean isHidden 判断当前路径是否是一个隐藏文件
boolean delete 直接删除
boolean createNewFile 创建新文件
file.mkdir 创建目录
file.getName 获取文件名
file.getAbsolutePath 获取文件绝对路径
file.listFiles 获取当前路径下的所有文件
2)方法的使用
https://blog.csdn.net/weili222/article/details/109492084
IO
IO指的是一组有顺序的、有起点的(程序),有终点的(外部设备)字节数据的集合,是对数据传输的抽象
java.io(Input/Output)
Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
流(Stream)
什么是流
流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”。
流的分类
1)按照流向:分为输入流和输出流
输入流:从数据源读取数据到程序的过程
输出流:从程序将数据流向数据源的过程
2)按照传输的类型:分为字符流和字节流
a.字符流可以处理字符,字节流可以处理字节,处理任意类型的对象
b.字符流:将原始数据解析为字符的序列,是会依赖当前平台的编码方式,字符流的输入和输出需要进行编码和解码
字节流:将数据解析为二进制数据,读写均为字节数据。所以效率比较高。
c.二进制数据不需要进行编码和解码,可移植性更高一些,与主机的编码方式无关
3)按照角色:分为节点流和处理流(装饰器设计模式)
节点流(低级流):程序直接相连得到的数据源
处理流(高级流):在已存在的流之上做了一层封装,通过封装之后的类来实现读取/写入的功能
字节流
InputStream:所有字节输入流的父类,所有的字节输入流都要继承该类。
OutputStream:所有字节输出流的父类,所有的字节输出流都要继承该类。
InputStream(输入流):输入流是用来读入数据的。- - - 读入
OutputStream(输出流):输出流是用来写出数据的。- - - 写出
字符流
Reader:所有字符输入流的父类,所有的字符输入流都要继承该类。
Writer:所有字符输出流的父类,所有的字符输出流都要继承该类
FileInputStream和FileOutputStream
FileInputStream(文件输入流)
从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取诸如图像数据之类的原始字节流。
FileOutoutStream(文件输出流)
文件输出流是用于将数据写入 File的输出流。
具体使用和一些属性
FileInputStream和FileOutputStream的具体使用和属性:
https://blog.csdn.net/weili222/article/details/109518619
FileReader和FileWriter
FileReader(字符输入流)
用来方便的从文件中读出字符的类
FileWriter(字符输出流)
用来方便的将字符数据写入文件的类
具体使用和一些属性
FileReader和FileWriter的具体使用方法和属性:
https://blog.csdn.net/weili222/article/details/109538527
转换流和缓冲流 (高级流)
转换流
(1)输入流 ->实际是字节流通向字符流的桥梁 (InputStreamReader)
(2)输出流 ->实际是字符流通向字节流的桥梁 (OutputStreamWriter)
OutStreamWriter可以指定编码表,将流中字符按照编码表转换为字节
InputStreamReader可以指定编码表读取字节将其按照编码解析为字符
具体的使用
OutStreamWriter和InputStreamReader使用:
https://blog.csdn.net/weili222/article/details/109544677
缓冲流
以字节流为例,BufferedInuputStream/BufferedOutputStream,BufferedInputStream内置一个缓冲数组,其会一次性读取8192字节的数据存入缓冲区当中,BufferedOutStream直接从缓冲区中拿到数据,写入到磁盘。
BufferedInuputStream
BufferedInputStream:缓冲字节输入流,是一个高级流(处理流),与其他低级流配合使用。
BufferedOutputStream
BufferedOutputStream:缓冲字节输出流是一个高级流(处理流),与其他低级流配合使用。
具体使用和一些属性
BufferedInuputStream和BufferedOutputStream具体使用和一些属性:https://blog.csdn.net/weili222/article/details/109544121
序列化和反序列化
概念
对象的序列化是一个将对象转换为字节流的过程,可以将其永久的保存在磁盘上或者在网络中传输到其他任何地方;反之,就将磁盘上的字节流恢复成对象的过程称之为反序列化。
序列化和反序列化所要用到的流
ObjectOutputStream和 ObjectInputStream
ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。
具体的使用和一些属性
ObjectOutputStream和 ObjectInputStream的具体使用和属性:
https://blog.csdn.net/weili222/article/details/109562041
RandomAcessFile
*的访问文件任意位置,进行读写操作。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
具体的使用和一些属性
RandomAcessFile的具体使用和属性:
https://blog.csdn.net/weili222/article/details/109563595
本文地址:https://blog.csdn.net/weili222/article/details/109486257