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

【JAVA入门】Day42 - 转换流

【JAVA入门】Day42 - 转换流


文章目录

  • 【JAVA入门】Day42 - 转换流


        转换流是字符流和字节流之间的桥梁。
        转换流中的输入流叫做 InputStreamReader,它可以把字节流转换为字符流。
在这里插入图片描述
        转换流的输出流叫做 OutputStreamWriter,它可以把字符流转换成字节流。
在这里插入图片描述
【使用例1】把一个 GBK 的文件中的中文读取到内存中,不能出现乱码。(作用1:按照指定的字符集读取数据)

package ConvertStream;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class ConvertStreamDemo1 {public static void main(String[] args) throws IOException {/*利用转换流按照指定字符编码读取数据D:\IdeaProjects\HelloWord\src\ConvertStream\GBKFile.txt*///1.创建转换流对象//两个参数,第一个是要转换的字节输入流,第二个是编码类型InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt"), "GBK");//2.读取数据//转换流本身就是一个字符流,可以直接用字符流的方法int ch;while((ch = isr.read()) != -1){System.out.print((char)ch);}//3.释放资源isr.close();}
}

        在 JDK11 以后,这种转码方式被替代了,替代它的是 FileReader() 构造新的参数—— Charset charset 。

package ConvertStream;import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;public class ConvertStreamDemo1 {public static void main(String[] args) throws IOException {/*利用转换流按照指定字符编码读取数据D:\IdeaProjects\HelloWord\src\ConvertStream\GBKFile.txt*//* //1.创建转换流对象//两个参数,第一个是要转换的字节输入流,第二个是编码类型InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt"), "GBK");//2.读取数据//转换流本身就是一个字符流,可以直接用字符流的方法int ch;while((ch = isr.read()) != -1){System.out.print((char)ch);}//3.释放资源isr.close();*///1.创建字符输入流对象//注意这里的编码是一个类,叫Charset类FileReader fr = new FileReader("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt", Charset.forName("GBK"));//2.读取数据int ch;while((ch = fr.read()) != -1){System.out.print((char)ch);}//3.释放资源fr.close();}
}

【使用例2】利用转换流按照指定的字符编码写出数据。

package ConvertStream;import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;public class ConvertStreamDemo2 {public static void main(String[] args) throws IOException {/*利用转换流按照指定字符编码写出数据D:\IdeaProjects\HelloWord\src\ConvertStream\GBKFile.txt*//*        //1.创建转换输出流对象OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt"), "GBK");//2.写出数据osw.write("你好你好你好你好!!");//3.释放资源osw.close();*///1.创建字符流对象FileWriter fw = new FileWriter("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt", Charset.forName("GBK"));//2.写出数据fw.write("你好你好你好你好!!");//3.释放数据fw.close();}
}

【使用例3】将本地文件中的 GBK 文件,转码成 UTF-8。

package ConvertStream;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;public class ConvertStreamDemo3 {public static void main(String[] args) throws IOException {/*将 GBK 文档转换为 UTF-8 文件*///1.创建输入输出流FileReader fr = new FileReader("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\GBKFile.txt", Charset.forName("GBK"));FileWriter fw = new FileWriter("D:\\IdeaProjects\\HelloWord\\src\\ConvertStream\\UTF8File.txt", Charset.forName("UTF-8"));//2.逐字符写数据int b;while((b = fr.read()) != -1){fw.write(b);}//3.关闭数据流fw.close();fr.close();}
}

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

相关文章:

  • 004 【编译神器】Makefile:最常用编译方法详解
  • Linux - iptables防火墙
  • 【警告 C6031:返回值被忽略:scanf】
  • Linux计算文件权限的mode和umask
  • bug是什么意思
  • MySQL学习(函数整理)
  • go 笔记
  • 【复杂系统系列(中级)】Kolmogorov复杂度——信息的无序度量【通俗理解】
  • [001-02-001]. 第07-02节:线程的创建与使用
  • 《C++初始化列表陷阱:谨慎前行,避免潜在风险》
  • 【数字集成电路与系统设计】Chisel/Scala简介与Verilog介绍
  • 【数字集成电路与系统设计】基本的组合逻辑电路
  • AI大模型全栈工程师课程笔记 - RAG 检索增强生成
  • 树莓派安装 OpenCV 教程
  • Coggle数据科学 | 小白学 RAG:Milvus 介绍与使用教程
  • 6、多线程
  • Android Studio报错: Could not find pub.devrel:easypermissions:0.3.0, 改用linux编译
  • 机器CPU突然升高的原因是什么?
  • [数据集][目标检测]脊椎检测数据集VOC+YOLO格式1137张1类别
  • 计算机网络 ---- OSI参考模型TCP/IP模型