JavaIO流

输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。将持久化的文件数据加载到内存中
输出:将程序(内存)数据输出到磁盘、U盘等存储设备中
Java 的 IO 流主要包括输入流和输出流两种 ,每种输入、输出流又可分为字节流和字符流两大类
1.字节流以字节为单位来处理输入、输出操作(音频、图像、视频)
2.字符流以字符为单位来处理输入、输出操作(文本文件)
File 类
1.File 类代表与平台无关的文件和目录。
2.File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
3.如果需要访问文件内容本身,则需要使用输入/输出流。
4.在这里插入图片描述
5.在这里插入图片描述
6.在这里插入图片描述
7.File类的常见构造方法
1).public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
2).public File(String parent,String child)
(1)以parent为父路径,child为子路径创建File对象。
(2)File的静态属性String separator存储了当前系统的路径分隔符。
(3)在UNIX中,此字段为‘/’,在Windows中,为‘\’
8.既可以表示“文件”也可以表示“目录”
9.通过构造函数创建一个File类对象,则该对象就是指定文件的引用,可以通过该对象对文件操作。
IO原理
1.Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。
2.java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
3.输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
4.输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
在这里插入图片描述

IO 流的分类
1.按流向(站位到程序的角度):
1)输入流
2)输出流
2.按处理的单位:
1)字节流(8bit)byte (非文本信息 视频、音频、图像)
2字符流(16bit)char(文本文件)
3.按流的角色
1)节点流:可以从一个特定的 IO 设备读/写数据的流(访问文件相关,也叫文件流,程序直接作用在文件上)
2)处理流:对一个已存在的流进行连接和封装,通过封装后的流来实现数据读/写操作 (缓冲流)
IO流体系
在这里插入图片描述
字节流:
1.8位
2.抽象类
3.InputStream和OutputStream
4.实现从指定的文件中获取字节和将字节写入指定的文件的子类:FileInputStream和FileOutputStream
字节流文件读写步骤
1.创建文件对象:File f = new File(“文件路径”);
2.根据文件对象创建输入输出流
3.实现对文件的读写
1)读:filein.read(字节数组);//将文件内容读到指定的字节数组
2)写:fileout.write(字节数组);//将指定字节数组中的数据写到文件
4.关闭流
filein.close();
fileout.close();
字符流
1.实现从指定的文件中读取字符和将字符写入指定的文件
2.抽象类:Reader和Writer
3.子类:FileReader和FileWriter
InputStream & Reader
1.InputStream 和 Reader 是所有输入流的基类。
2.InputStream(典型实现:FileInputStream):
1)int read()
2)int read(byte[] b)
3)int read(byte[] b, int off, int len)
3.Reader(典型实现:FileReader):
1)int read()
2)int read(char [] c)
3)int read(char [] c, int off, int len)
4.程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
OutputStream & Writer
1.OutputStream 和 Writer 也非常相似:
1)void write(byte write/int c)
2)void []/char[] buff)
3)void write(byte[]/char[] buff, int off, int len);
2.因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
1)void write(String str);
2)void write(String str, int off, int len)
对象的序列化
1.对象序列化的目标是将对象保存到磁盘上,或允许在网络中直接传输对象。
2.序列化是RMI(Remote Method Invoke – 远程方法调用)过程的参数和返回值都必须实现的机制,而 RMI 是 JavaEE 的基础。因此序列化机制是 JavaEE 平台的基础。
3.如果需要让某个对象支持序列化机制,则必须让的类是可序列化的,该类必须实现如下两个接口之一:
1)Serializable
2)Externalizable
4.若某个类实现了 Serializable 接口,该类的对象就是可序列化的:
1)创建一个 ObjectOutputStream
2)调用 ObjectOutputStream 对象的 writeObject() 方法输出可序列化对象
5.反序列化
1)创建一个 ObjectInputStream
2)调用 readObject() 方法读取六种的对象
6.如果某个类的字段不是基本数据类型或 String 类型,而是另一个引用类型,那么这个引用类型必须是可序列化的,否则拥有该类型的 Field 的类也不能序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值