IO流处理2

字符流:
字符编码:
常见的字符编码集:
ASCLL:美国信息互换代码
ISO-8859-1:欧洲国家使用的字符编码,单字节字符编码
Big5:台湾主要使用的字符编码集 繁体字
GBK:中国汉字的字符编码集
GB2312:对GBK字符编码集的扩展
SHIFT-J:日文字符编码集
Unicode:通用字符编码集又称国际码
UTF-8:软件开发通用的字符编码集
字符流:
Reader:抽象类
InputStreamReader类
FileReader类
FileReader类的构造方法:
FileReader(File file);带参构造:参数是file对象
FileReader(String path);带参构造:参数是String路径
常用路径:

 	int read();//读取一个字符 	read(char[] c);//读取指定数组长度的字符保存到char数组中
 	read(char[] c,int start,int len);//读取指定长度的字符 	close();//关闭流 	String
 getEncoding()方法:主要是获取当前文件的字符编码

FileWriter:
类结构:
Writer:抽象类
–OutputStreamWriter类
–FileWriter类
FileWriter类:构造方法:
FileWriter(File file); //给一个File对象构造一个FileWriter对象。
默认:覆盖文件原来的内容。
FileWriter(File file,boolean append);
file:文件对象
append:true://追加
false://覆盖,原来文件被重写
FileWriter(String path);参数:文件绝对路径
默认:覆盖文件原来的内容
FileWriter(String path,boolean append);path:文件的路径
append:true:在文件原来内容的后面追加内容
false:覆盖原来的内容
常用方法:

writer(int c);//代表字符的ascll值
writer(String);//向文件中写入String字符串
writer(char[] b);//向文件中一个写入指定的数字长度的字符
writer(char[] b,int off,int len);//写入数组的一部分
getEncoding();//获取文件的字符集
flush();//刷新缓存
close();//关闭流

转换流:
InputStreamReader类:
该类主要用于字节流和字符流直接的转换。
构造方法:
InputStreamReader(InputStream in);参数:字节流读取对象
InputStreamReader(InputStream in,String charset);
in:字节流读取对象
charset:字符集
常用方法:

int read();//读取一个字符
read(char[] b);//读取数组
read(char[] b,int start,int len);//读取部分数组
close();//关闭流

OutputStreamWriter类
构造方法:
OutputStreamWriter(OutStream out);
OutputStreamWriter(OutputStream out,String charset);
out:字节写入流对象
charset:指定的字符集
常用方法:

write(int c);//写入一个字符
write(String str);//写入一个字符串
write(char[] b);//写入一个char数组
write(char[] b,int start,int len);//写入指定长度的部分数组
flush();//刷新缓存区
close();//关闭流

乱码出现的解决方式:
原则:遵循编码集统一性
字节缓冲流:
BufferedInputStream:字节读取缓冲流
BufferedOutputStream:字节写入缓冲流
read();
write(byte[] b);
主要用于文本文件的读写操作:
BufferedReader://字符读取缓冲流
readLine();//读取一行
read(char[] c);
BufferedWriter:字符写入缓冲流
newLine();//写入一个换行符
write(char[] c);
通过缓冲区,缓存文件的信息,从缓存中读取文件,提高读写效率。
序列化和反序列化:
把对象转化二进制文件的形式,对象的序列化。
把二进制的形式转换成对象,反序列化。

ObjectInputStream 读取类
构造方法:

ObjectInputStream(InputStream in);
	//常用方法:
		read();//读取一个字节
		readInt();//读取一个整数
		readDouble();//读取一个双精度类型
		readLong();//读取浮点型
		readObject();//读取序列化的读写
		close();
	ObjectOutputStream 写入类
	//构造方法:
		ObjectOutputStream(OutputStream out);
常用方法:
	

write(byte b);
		writeInt(int i);//写入一个整形
		writeDouble(double d)//写入一个浮点型
		writeLong(long l)//写入长整型
		writeFloat(float f)//写入浮点型
		writeObject(Object obj);//直接写入对象
		close();
		flush():

文件读取的时候要遵循文件的写入顺序,也就是文件写入的时候用的是什么类型,读取的时候也要按照顺读取该类型。
StringBuffer:
可变的字符串
构造函数:

StringBuffer() ;//创建一个默认长度为16的空字符串
		StringBuffer(String str);//创建一个指定参数值字符串
常用方法:
	append(String str); //追加字符串
	delete(int start,int end);//删除字符串
	insert(int index,String str);//插入字符串
	replace(int start,int end,String str);//替换字符串
	void setCharAt(int index,char ch);//修改

面试题:Sting,StringBuffer,StringBuilder区别:
1.String是定长的不可修改的字符串
2.StringBuffer,StringBuilder是可变字符串
3.StringBuffer线程安全的,StringBuilder非线程安全的,处理速度快。

你可能感兴趣的:(IO流处理2)