一、解码
当要读取指定编码的纯文本数据时,可以使用 InputStreamReader 进行解码。所谓解码,即把二进制的字节序列按照指定字符编码解码为可以被正确识别的字符内容。
Demo:当前系统平台的字符编码方式是:GBK,需要读取一个UTF-8 的文件内容,到当前系统中。
1 import java.io.BufferedReader;
2 import java.io.FileInputStream;
3 import java.io.IOException;
4 import java.io.InputStreamReader;
5
6 public class TestDecode {
7
8 public static void main(String[] args) {
9 BufferedReader br = null;
10 try {
11 br = new BufferedReader(new InputStreamReader(new FileInputStream("test_utf8.txt"),"GBK"));
12
13 String str;
14 while((str = br.readLine())!=null){
15 System.out.println(str);
16 }
17 } catch (IOException e) {
18 e.printStackTrace();
19 } finally{
20 try {
21 br.close();
22 } catch (IOException e) {
23 }
24 }
25 }
26 }
二、编码
要将纯文本数据,按照指定编码转成字节序列时,可以选择 OutputStream。
Demo:编写程序实现将一个编码为“GBK”的纯文本文件test.txt,复制为编码是“UTF-8”的文件other.txt。
1 import java.io.BufferedReader;
2 import java.io.BufferedWriter;
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
8 import java.io.OutputStreamWriter;
9
10 public class TestEncode {
11 public static void main(String[] args) throws IOException {
12 copy(new File("test.txt"),"GBK",new File("other.txt"),"UTF-8");
13 }
14
15 public static void copy(File src, String srcCharset, File dest, String destCharset) throws IOException{
16 if(!src.isFile()){
17 throw new RuntimeException(src.getPath() + "不存在");
18 }
19 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(src),srcCharset));
20 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest),destCharset));
21
22 String str;
23 while((str = br.readLine())!=null){
24 bw.write(str);
25 bw.newLine();
26 }
27
28 bw.close();
29 br.close();
30 }
31 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器