2020-11-09

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

java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; @SuppressWarnings("serial") //一个要想实现序列化则必须实现Serializable接口 class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return "Name:" + this.name + ", Age:" + this.age; } } public class Demo { public static void main(String[] args) { String path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "demo.txt"; Person p1 = new Person("zhangsan",12); Person p2 = new Person("lisi",14); //此处创建文件写入流的引用是要给ObjectOutputStream的构造函数玩儿 FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(path); oos = new ObjectOutputStream(fos); //这里可以写入对象,也可以写入其他型数据 oos.writeObject(p1); oos.writeObject(p2); } catch (IOException e) { e.printStackTrace(); } finally { try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } } } 解压密码 www.jiangyea.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值