当前位置: 首页 > news >正文

JavaSE——IO流4:高级流(转换流InputStreamReader、OutputStreamWriter)

目录

一、转换流基本介绍 

二、转换流的使用

1.利用转换流按照指定字符编码读取 

2.利用转换流按照指定字符编码写出

3.将本地文件中的GBK文件,转成UTF-8

4.利用字节流读取文件中的数据,每次读一整行,而且不能出现乱码


一、转换流基本介绍 

字符转换输入流:InputStreamReader        在Reader下

字符转换输出流:OutputStreamWriter        在Writer下

在JDK11中:

InputStreamReader被FileReader取代;

OutputStreamWriter被FileWriter取代

转换流的作用:

  • 指定字符集读写数据(JDK11之后已经淘汰)
  • 字节流想要使用字符流中的方法

二、转换流的使用

1.利用转换流按照指定字符编码读取 

public class ConvertStreamDemo1 {public static void main(String[] args) throws IOException { // 该方法在JDK11已过时/*InputStreamReader isr = new InputStreamReader(new FileInputStream("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfile.txt"),"GBK");int ch;while ((ch = isr.read()) != -1) {System.out.print((char) ch);}isr.close();*/// 使用下面的方法读取文件FileReader fr = new FileReader("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfile.txt",Charset.forName("GBK"));int ch;while ((ch = fr.read()) != -1) {System.out.print((char) ch);}fr.close();}
}

运行结果:

 

2.利用转换流按照指定字符编码写出

public class ConvertStreamDemo2 {public static void main(String[] args) throws IOException {// 下面的方式在JDK11已过时/*OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfiletest.txt"),"GBK");osw.write("万紫千红总是春");osw.close();*/FileWriter fw = new FileWriter("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfiletest1.txt",Charset.forName("GBK"));fw.write("万紫千红总是春");fw.close();}
}

3.将本地文件中的GBK文件,转成UTF-8

public class ConvertStreamDemo3 {public static void main(String[] args) throws IOException {/*InputStreamReader isr = new InputStreamReader(new FileInputStream("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfile.txt"), "GBK");OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("chapter18\\src\\com\\testdemo\\myconvertstream\\utf-8file.txt"), "UTF-8");int ch;while ((ch = isr.read()) != -1) {osw.write(ch);}osw.close();isr.close();*/FileReader fr = new FileReader("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfile.txt", Charset.forName("GBK"));FileWriter fw = new FileWriter("chapter18\\src\\com\\testdemo\\myconvertstream\\utf-8file1.txt", Charset.forName("UTF-8"));// 或者:// FileWriter fw = new FileWriter("chapter18\\src\\com\\testdemo\\myconvertstream\\utf-8file.txt", StandardCharsets.UTF_8);int ch;while ((ch = fr.read()) != -1) {fw.write(ch);}fw.close();fr.close();}
}

运行结果:

 

4.利用字节流读取文件中的数据,每次读一整行,而且不能出现乱码

public class ConvertStreamDemo4 {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("chapter18\\src\\com\\testdemo\\myconvertstream\\gbkfile.txt");InputStreamReader isr = new InputStreamReader(fis, "GBK");BufferedReader br = new BufferedReader(isr);String ch;while ((ch = br.readLine()) != null) {System.out.println(ch);}br.close();}
}

运行结果:


http://www.mrgr.cn/news/55752.html

相关文章:

  • 基于微博评论的自然语言处理情感分析
  • OCR经典神经网络(三)LayoutLM v2算法原理及其在发票数据集上的应用(NER及RE)
  • 微信小程序用开发工具在本地真机调试可以正常访问摄像头,发布了授权后却无法访问摄像头,解决方案
  • RestHighLevelClient操作es查询文档
  • msvcp140.dll丢失的解决方法吃鸡
  • 刷题/学习网站推荐
  • 点云处理中的三种近邻搜索方法:K近邻、体素内近邻和半径内近邻搜索
  • OpenSEMBA :一个用于电磁场模拟的开源软件框架
  • 论文阅读——Restormer
  • 11. 事件机制
  • 034_基于php万怡酒店管理系统
  • 如何在 CentOS 7 上使用 Nginx 将 www 重定向到非 www
  • Docker安装Mysql数据库
  • XMLHttpRequest和FormData下载文件,ajax下载文件
  • 035_基于php助农生鲜销售系统的设计与实现
  • 通用软件版本标识
  • 计算机的错误计算(一百三十)
  • X射线衍射(X-ray Diffraction,XRD)小白版
  • 快速排序.
  • 【Android_14】ACodec-OMX跨IPC的一些类
  • 【yolov8旋转框检测】微调yolov8-obb目标检测模型:数据集制作和训练
  • STM32G4系列MCU的启动项配置
  • 【luogu P2148】 ED(SG函数)
  • Python数值计算(27)—— 数值微分
  • 基于Springboot在线视频网站的设计与实现
  • 心觉:突破自己