Java的 io流( 四 )


原因2:比如说,在编码时用,但在解码时可能用的是GBK
Java中编码和解码的代码实现方法名说明
byte[ ] ()
使用默认方式进行编码(ieda默认用UTF-8,默认使用gbk)
byte[ ] ( )
使用指定方式进行编码
方法名说明
(byte[ ] bytes)
使用默认方式进行解码
(byte[ ] bytes, )
使用指定方式进行解码
public static void main(String[] args) throws UnsupportedEncodingException {//编码String str="ox欧肖";//默认方式byte[] bytes1 = str.getBytes();//指定方式byte[] bytes2 = str.getBytes("GBK");System.out.println(Arrays.toString(bytes1));System.out.println(Arrays.toString(bytes2));//[111, 120, -26, -84, -89, -24, -126, -106]//[111, 120, -59, -73, -48, -92]//解码//默认方式解码String str2=new String(bytes1);//使用指定方式解码,如果编码与解码不同,就会出现乱码String str3=new String(bytes1,"GBK");String str4=new String(bytes2,"GBK");System.out.println(str2);System.out.println(str3);System.out.println(str4);//ox欧肖//ox娆ц倴//ox欧肖}
字符流
字符流的底层就是字节流
字符流=字节流+字符集
字符流使用场景:对于纯文本文件进行读写操作
(字符输入流)
1.创建字符输入流对象(构造方法)
方法名说明
(File file)
创建字符输入流关联本地文件
( )
创建字符输入流关联本地文件
注意:读取的文件不存在会直接报错
2.读取数据(成员方法)
方法名说明
int read()
读取数据,读到末尾返回-1
int read(char[ ] )
读取多个数据,读到末尾返回-1
注意:
1.按字节进行读取,遇到中文,一次读多个字节,读取后编码,返回一个整数
2. 读到文件末尾了,read方法返回-1
3.释放资源
还是close方法
public static void main(String[] args) throws IOException {//空参的read方法File file=new File("D:\\我的世界\\a1.txt");FileReader reader1=new FileReader(file);//file对象的形式传递FileReader reader2=new FileReader("D:\\我的世界\\a1.txt");//字符串的形式传递int ch ;//字符流的read方法也是一个一个的读取字节,遇到中文一次读取多个//在底层会进行解码把读取到的数据转成10进制并且返回//这个返回的数据就是字符集上对应的10进制数字//如果想看到中文就用(char)强转就行了while ((ch=reader1.read())!=-1){System.out.print((char)ch);}reader1.close();//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》//带参的read方法 read(char[] buffer)//带参的read方法将读取数据,解码,强转数据进行合并//将强转得到的字符都放到数组中//带参的返回值还是读取的元素个数char[]arr=new char[2];//表示一次读取两个数据int len;//表示当前读到了第几个while((len=reader2.read(arr))!=-1){//这里的new String可以把数组里的元素转成字符串//第二个参数是要开始转化的起始索引,第三个参数就是终止索引System.out.print(new String(arr,0,len));}//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》}
(字符输出流)方法名说明
(File file)
创建字符输出流关联本地文件
( )
创建字符输出流关联本地文件
(File file, )
创建字符输出流关联本地文件,续写
( , )
创建字符输出流关联本地文件,续写
前两种方式是默认关闭续写的,即如果在创建对象时文件内存在数据,会先清空文件内的数据再写,
后面的方式可以打开续写开关,true就是打开续写开关
方法名说明
void write(int c)