JAVA高阶笔记(三)--File I/O流

155 阅读3分钟

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接口;