JAVA高阶笔记(三)--File I/O流
1.File: java.io.File
a.what:
文件可认为是相关记录或放在一起的数据的集合
b.创建文件的多种方式:
File file=new File(String path);
File file=new File(String parentPath,String path);
File file=new File(File parentFile,String path);
c.常用方法:
mkdir():创建目录
createNewFile():创建文件
exists():判定文件是否存在
getName():获取文件名字
getPath():获取文件地址
getAbsolutePath():获取文件的绝对地址
length():获取文件长度,单位是字节,一个单词为一个字节,一个汉字为三个字节
isFile():判定是否是文件
isDirectory():判定是否是目录
delete():删除方法
API...
2.流:
a.流
是指一连串流动的字符,是以先进先出方式发送信息的通道
b.流的分流:
- 按流向:输出流(写)、输入流(读)
- 按处理单元: 字符流、字节流
组合四种流使用:
3.InputStream抽象类:字节输入流---读
a.按照字节一个一个读取:
效率低下,如果是汉字使用该方法会出现乱码?
b.FileInputStream实现子类
c.常见的方法:
read():一个字节一个字节读取;
read(byte[]):按照数组读取
available():判定读取以后剩余字节数
close():流使用完以后需要关闭的方法
4.OutputStream抽象类:字节输出流--写
a.按照字节一个一个写入
b.FileInputStream实现子类
c.常见方法:
write(byte[]):字节写入方法
write(byte[],indexStart,len):指定范围写入
flush():指刷新方法--写都需要该方法
close():流的关闭方法
d.注意事项:
创建该对象时构造函数中可以添加boolean值参数
该参数为true表示将文本写入时直接追加到尾部;
该参数为false表示将之前文本在写入时直接覆盖;
5.综合练习:
创建文件夹--创建文件---复制文本内容(读--写)--删除源文件
6.Reader抽象类:
a.按照字符进行读取内容
b.FileReader实现子类,该子类不是Reader的直接子类,而是桥节流InputStreamReader的子类;
c.read():读取字符
read(char[],offset,length):字符数组读取
close():关闭方法
d.注意事项:
字符输入流----桥节流InputStreamReader---字节输入流
7.字符输入流缓冲区对象:
a.why:为了读取时提高效率;
b.what:BufferedRead,该对象提供了缓冲区,读取时效率提高,特有方法readLine();
c.how:将字符输入流对象放入该对象中创建
8.Writer抽象类:
a.按照字符进行写入
b.FileWriter实现子类,该子类不是Writer的直接子类,而是桥节流OutputStreamWriter的子类;
c.write(String):直接写入字符串
write(char[]):写入字符数组
flush():关闭流之前需要刷新
close():关闭方法
d.注意事项:
字符输出流----桥节流OutputStream---字节输出流
9.字符输出缓冲区对象BufferedWriter同输入对象...
提供特有方法newline()---换行
10.二进制输入输出流---图片等的读写操作:
使用:
DataInputStream(new FileInputStream())
DataOutputStream(new FileOutputStream())
11.序列化和反序列化(钝化和锐化)
a.序列化-ObjectOutputStream:
将java中的对象信息存放到文本中-writeObject(Object);
b.反序列化-ObjecteInputStream:
将文本中的信息还原为对象-readObject(Object);
c.how步骤:
需要序列化的对象的类需要implements java.io.Serializable接口;