java基础语法-IO

一、持久化

a)目前的数据全部存储在内存中,但是只是临时存储,重新运行程序,数据丢失,无法持久化。
b)持久化:将数据从内存中转移到存储设备的过程。

二、流
a)流的概念:就是在内存与存储设置设备之间转换的通道。
b)流是具有方向
在这里插入图片描述

三、流的分类【重点】

a)按照方向分类(以内存为参照物)[重点]
i.输入流:将 <存储设备> 中的 数据 转移到 <内存> 中。
ii.输出流 : 将 <内存> 中的 数据 转移到 <存储设备> 中。

b)按照单位分类
i.字节流:以字节为单位,可以传输任意类型的文件。
ii.字符流:以字符为单位,只能传输文本类型的文件。
文本文件: .java .txt .c .html .doc等文件
非文本文件:.class .jpg .mp3 .mp4 .pdf .avi等文件。

c)按功能分类
i.节点流:只具有基本的读写功能。
ii.过滤流:除了基本的读写功能之外还具有其他的功能。

四、字节流
概念:以字节为单位,可以传输任意类型的文件。

a)字节流的父类:java.io包下 抽象类
OutputStream(字节输出流) write() /InputStream(字节输入流) read()

b)节点流
FileOutputStream /FileInputStream
文本字节节点输出流/文本字节节点输入流
i.FileOutputStream 字节节点输出流
在这里插入图片描述
注意:没有文件夹会报错,需要手动添加文件夹。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.常见方法
a)void write(int a);//向文件中写出一个数字/字符
在这里插入图片描述
b)void write(byte[] bs);//向文件中写出一个byte[]
在这里插入图片描述
c)void write(byte[] b, int off, int len);//将指定数组中的偏移起始位置off 写出length长度的字节。
在这里插入图片描述
ii.FileInputStream字节节点输入流
在这里插入图片描述
1.常用方法
a)int read();//从此输入流中读取一个字节
b)int read(byte[] bs);//从输入流读入一个数组的数据的个数,当读完了数组中的个数时,返回-1。
int read(byte[],int off,int len);//从输入流中读入指定偏移开始位置指定长度的数组中的字符个数。

c)过滤流
作用:在节点流的基础添加其他的辅助功能。
i.BufferedOutputStream/BufferedInputStream 缓冲流
将数据先写出到内存中,然后再一次性将数据写出到文件中。
ii.常见方法
1.flush();//刷新缓冲区
2.close();//关闭流并释放出所有缓冲区的数据 默认调用flush();

在这里插入图片描述
在这里插入图片描述
ii.DataOutputStream/DataInputStream
读写8种基本数据类型+String
读写String类型:writeUTF(“字符串”); String s = readUTF();

iii.ObjectOutputStream/ObjectInputStream
可以读写8种基本数据类型、String、对象类型。
void writeObject(obj);//将内存中对象写出到文件中
Object readObject();//将文件中的对象读入到内存中
序列化:将对象在 内存 与 存储设备之间进行传输的过程
想要能够序列化就必须实现Serializable接口,否则会报错。
在这里插入图片描述

注意:
1、想要能够序列化要求必须实现Serializable接口,同时要求对象中所有的属性也必须实现Serializable接口;String、8种包装类已经实现了Serializable。
在这里插入图片描述

2、如果不想让对象中的某属性能够序列化,可以使用transient修饰
3、当文件读取到末尾时会抛出EOFException。
OutputStream/InputStream
FileOutputStream/FileInputStream
BufferedInputStream/BufferedOutputStream
DataOutputStream/DataInputStream
ObjectOutputStream/ObjectInputStream

在这里插入图片描述

五、产生中文乱码的原因

编解码格式不一样 :
在这里插入图片描述
常见的编码格式
简体中文:GBK
繁体中文:BIG5
西欧:ISO-8859-1
万国码:UTF-8

六、字符流
a)字符流的父类 java.io.Writer/Reader 抽象类
b)常用方法
i.write(int c);//一次性写一个单个的字符
ii.write(String s);//一次性写多个字符
iii.write(char[] cs);//一次性写一个字符数组
iv.write(char[] cs,int off,int len);//一次性写一个字符数组中的部分字符。
v.int read();//读取单个字符
vi.int read(char[] cs);读取一个字符数组 返回值为每次读入的个数。
vii.int read(char[] cs,int off,int len); 读取一个字符数组的部分。
c)节点流 FileWriter/FileReader 详情请看TestWriter.java
d)过滤流PrintWriter/BufferedReader (BufferedWriter)

i.构造方法:
BufferedWriter(Writer w); 构建字符过滤流依靠字符节点流。PrintWriter(Writer w);
BufferedReader(Reader r);

ii.常见方法
1.newLine();//换行
2.readLine();//一次读一行
3.println(Str s);//写出一行并换行

e)桥转换流 (字符流) OutputStreamWriter/InputStreamReader
i.作用:将字节流转换成字符流的桥梁,设置编解码格式。
ii.构造方法:
1.OutputStreamWriter(OutputStream os,Charset c);
2.InputStreamReader(InputStream is,Charset c);
借助于字节流构建字符流 设置编解码格式。
iii.使用桥转换流的步骤
a)创建字节流
b)创建桥转换流
c)包装字符过滤流
d)关流

七、File类
a)IO:对文件中内容进行操作。
b)File:对文件本身进行操作;新建一个文件、删除一个文件。
c)常见的方法
i.构造方法 : File(“路径”);
ii.其他方法
1.boolean createNewFile();//创建一个新的文件,创建成功返回true,否则返回false
2.boolean mkdir();//创建一个新的目录/文件夹;创建成功返回true,否则返回false
3.boolean delete();//删除指定的文件或者文件夹;当此文件夹中存在文件时,删除失败。
4.boolean exists();//判断指定文件是否存在;
5.String getAbsolutePath();//返回此文件或者文件夹的绝对路径。
6.boolean isDirectory();//判断是否为一个目录
7.boolean isFIle();//判断是否为一个文件
8.File[] listFiles();//返回此文件夹下的所有文件以及文件夹。
9.String getName();//返回此文件的文件名
10.boolean setReadonly();//设置为只读
11.Boolean renameTo(f2);//将文件名称改为f2的名字

(待续)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值