Java知识总结(一)

RestFul风格讲解

  返回  

五、IO流知识点

2021/8/21 19:15:38 浏览:

IO流

一、File类的使用

	定义
		File是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找、和删除等操作
	构造方法
		public File(String pathname)
			通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
		public File(String parent, String child)
			从父路径名字符串和子路径名字符串创建新的File实例
		public File(File parent, String child)
			从父抽象路径名和子路径名字符串创建新的 File实例
	路径的使用
		从盘符开始的路径,这是一个完整的路径。
		相对于项目目录的路径,这是一个便捷的路径,开发中经常使用
	获取功能的方法
		public String getName() :返回由此File表示的文件或目录的名称。
		public String getPath() :将此File转换为路径名字符串。
		public String getAbsolutePath() :返回此File的绝对路径名字符串
		public File getAbsoluteFile():返回此File对应的绝对路径文件
		public String getParent():返回此File对应的父文件夹路径。
		public File getParentFile():返回此File对应的父文件夹对象
		public long length() :返回由此File表示的文件的大小,单位是字节
	判断相关的方法
		public boolean exists() :此File表示的文件或目录是否实际存在。
		public boolean isDirectory() :此File表示的是否为目录
		public boolean isFile() :此File表示的是否为文件
		public boolean renameTo(File dest):把文件重命名为指定的文件路径
	操作文件相关的方法
		public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件
		public boolean delete() :删除由此File表示的文件或目录
		public boolean mkdir() :创建由此File表示的目录
		public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录
	文件夹的遍历
		public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录
		public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录

二、IO概述

	IO流分类
		根据数据流向
			输入流
				把数据从其他设备上读取到内存中的流
			输出流
				把数据从内存 中写入到其他设备上的流
		根据数据的类型
			字节流
				以字节为单位,读写数据的流
			字符流
				以字符为单位,读写数据的流
	父类介绍
		字节流
			字节输入流
				InputStream
			字节输出流
				OutputStream
		字符流
			字符输入流
				Reader
			字符输出流
				Writer
		转换流
			转化输入流
				InputStreamReader
			转换输出流
				OutputStreamWriter
		对象流
			对象输入流
				ObjectInputStream
			对象输出流
				ObjectOutputStream
	输入、输出的标准化过程
		输入过程
			① 创建File类的对象,指明读取的数据的来源。(要求此文件一定要存在)
			② 创建相应的输入流,将File类的对象作为参数,传入流的构造器中
			③ 具体的读入过程:创建相应的byte[] 或 char[]
			④ 关闭流资源
		说明:程序中出现的异常需要使用try-catch-finally处理
		输出过程
			① 创建File类的对象,指明写出的数据的位置。(不要求此文件一定要存在)
			② 创建相应的输出流,将File类的对象作为参数,传入流的构造器中
			③ 具体的写出过程:  write(char[]/byte[] buffer,0,len)
			④ 关闭流资源

三、字符流

	FileReader的使用
		public void close() :关闭此流并释放与此流相关联的任何系统资源
		public int read(): 从输入流读取一个字符
		public int read(char[] cbuf): 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中
		FileReader(File file): 创建一个新的 FileReader ,给定要读取的File对象
		FileReader(String fileName): 创建一个新的 FileReader ,给定要读取的文件的名称
	FileWriter的使用
		void write(int c) 写入单个字符
		void write(char[] cbuf)写入字符数组
		abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数
		void write(String str)写入字符串
		void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数
		void flush()刷新该流的缓冲
		void close() 关闭此流,但要先刷新它
		FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象
		FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称
	文本文件的复制

四、字节流

	图片的复制
	FileOutputStream
		public void close() :关闭此输出流并释放与此流相关联的任何系统资源
		public void flush() :刷新此输出流并强制任何缓冲的输出字节被写入
		public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流
		public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流
		public abstract void write(int b) :将指定的字节输出流
		public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件
		public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件
		public FileOutputStream(File file, boolean append): 创建文件输出流以写入由指定的 File对象表示的文件
		public FileOutputStream(String name, boolean append): 创建文件输出流以指定的名称写入文件
	FileInputStream
		FileInputStream(File file): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名
		FileInputStream(String name): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名

五、转换流

	InputStreamReader
		将一个字节的输入流转换为字符的输入流
		解码:字节、字节数组  --->字符数组、字符串
	OutputStreamWriter
		将一个字符的输出流转换为字节的输出流
		编码:字符数组、字符串 ---> 字节、字节数组
	实现举例

六、编码表

常见的编码表
	ASCII:美国标准信息交换码。
		用一个字节的7位可以表示
	ISO8859-1:拉丁码表。欧洲码表
		用一个字节的8位表示
	GB2312:中国的中文编码表。最多两个字节编码所有字符
	GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码
	Unicode:国际标准码,融合了目前人类使用的所字符。为每个字符分配唯一的字符码。所有的文字都用两个字节来表示
	UTF-8:变长的编码方式,可用1-4个字节来表示一个字符

七、其他流的使用

	1. 标准的输入输出流
		System.in:标准的输入流,默认从键盘输入
		System.out:标准的输出流,默认从控制台输出
		修改默认的输入和输出行为
			System类的setIn(InputStream is)
			System类的setOut(PrintStream ps)
	2. 打印流
		PrintStream 
		PrintWriter
		说明
			提供了一系列重载的print()和println()方法,用于多种数据类型的输出
			System.out返回的是PrintStream的实例
	3. 数据流
		DataInputStream
		DataOutputStream
		作用
			于读取或写出基本数据类型的变量或字符串
		注意点
			读取不同类型的数据的顺序要与当初写入文件时,保存的数据的顺序一致
		代码实现
	4.随机存取文件流
		使用说明
			1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口
			2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流
			3.如果RandomAccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建。
			4.如果写出到的文件存在,则会对原文件内容进行覆盖。(默认情况下,从头覆盖)
			5. 可以通过相关的操作,实现RandomAccessFile“插入”数据的效果。seek(int pos)
		代码实现数据的插入效果

八、缓冲流

	缓冲流的分类
		字节缓冲流
			BufferedInputStream
			BufferedOutputStream
		字符缓冲流
			BufferedReader
				public String readLine(): 读一行文字
			BufferedWriter
				public void newLine(): 写一行行分隔符,由系统属性定义符号
	缓冲流的作用
		提供流的读取、写入的速度
	缓存流作用的原因
		内部提供了一个缓冲区。默认情况下是8kb
	使用BufferedInputStream和BufferedOutputStream:处理非文本文件
	使用BufferedReader和BufferedWriter:处理文本文件

九、序列化和反序列化(对象流)

	对象的序列化机制
	ObjectOutputStream(序列化)
		内存中的对象--->存储中的文件、通过网络传输出去
	序列化代码实现
	ObjectInputStream(反序列化)
		存储中的文件、通过网络接收过来 --->内存中的对象
	反序列化代码实现
	实现序列化的对象所属的类需要满足
		1.需要实现接口:Serializable
		2.当前类提供一个全局常量:serialVersionUID
		3.除了当前Person类需要实现Serializable接口之外,还必须保证其内部所有属性也必须是可序列化的。(默认情况下,基本数据类型可序列化)
		4.ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号