asp企业网站cms,手机是使用wordpress,龙华品牌网站制作,浙0577 icp网站建设同理#xff0c;创建f1和f2方法#xff0c;分别测试OutputStreamWriter和InputStreamReader 也是主要分三步#xff0c;即1创建流 2使用流 3关流
OutputStreamWriter f1方法
因为要操作流#xff0c;所以先创建一个try-catch-finally结构#xff0c;创建流对象Out…同理创建f1和f2方法分别测试OutputStreamWriter和InputStreamReader 也是主要分三步即1创建流 2使用流 3关流
OutputStreamWriter f1方法
因为要操作流所以先创建一个try-catch-finally结构创建流对象OutputStreamWriter传参使用FileOutputStream依然传地址使用write方法往文件中写入一串字符去磁盘检查文件即可验证 在记事本中读取的时候这里可能会出现乱码就要看看idea的编码和记事本是不是一样的都在右下角 所以说这里idea是可以在程序中指定编码的从而达到编码转换的效果
回到创建FileOutputStream的地方可以看到FileOutputStream是有好几种重载的构造方法的后面第二个参数就是指定字符集 可以写入 gbk iso-8859-1等 保持写入时的编码和记事本的编码一致即可在程序写进记事本后,去打开记事本正常查看
InputStreamReader f2方法
这里如果不用记事本程序写完后继续使用程序来读取也是可以的 同样因为要操作流所以先创建一个try-catch-finally结构创建流对象InputStreamReader传参使用FileInputStream依然传上面这个地址使用read方法从文件中读取出这一串字符 这里发现读取出来的并不是预想之中的字符而是一串数字 并且在换了几种字符集后发现不同的编码表 打印出来的数字也不一样的
如果读取的是utf-8 和idea默认读取的编码是同一种,那么读取到的数字就和写入的一样 实际上我们并不是想看这个编码是想看中文字符内容下面来完善
1、先动态创建一个长度足够的char数组 2、然后调read方法将字符数据读到这个数组里面去返回是数据的长度不过此时是read的重载的传数组的方法直接传数组
3、最后调String重载的构造方法将char数组封装成String
这里传起始下标和数据的长度是因为要读到了几个长度就封装几个长度不然会字符串输出完后后面全是空格
注意传的长度是上面接收read方法返回的数据长度而不是char数组的长度→chars.length !
代码:
到这里还需要补充一点,,回去仔细看控制台输出,会发现字符串的第一个字符没有了
换了其他字符串写入也是丢失首字符 这是因为在前面还调用read方法读取了一下而read方法的特性是按顺序读取且只能读取一次其实前面已经把第一个字符读了打印出一个编码数字到控制台再继续读取后面剩下的字符就引起了这个问题