首页 > 基础资料 博客日记
FileInputStream类乱码原因及解决方案
2023-05-10 22:31:57基础资料围观624次
FileInputStream读取文件产生乱码的主要原因是文本文件编码与JVM默认编码不一致。常见的编码格式有UTF-8,GBK等,如果读取的文本文件使用了不同于JVM默认编码格式的编码,则可能会出现乱码情况。
解决方案如下:
1.明确文件所采用的编码格式,可以在文本编辑器中打开文件并查看其编码类型。例如,在Notepad++中可以通过“编码”菜单选择查看文件编码类型。
2.使用Java提供的InputStreamReader类指定读取文件时所采用的编码格式。示例如下:
FileInputStream fileInputStream = new FileInputStream(filePath); InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
3.使用BufferedReader逐行读取文件内容,以确保正确处理可能存在的换行符号等特殊字符。示例如下:
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line = null; while ((line = bufferedReader.readLine()) != null) { //对读取到的每一行进行处理 System.out.println(line); }
4.使用try-with-resources语句块,确保读取完成后自动关闭流,避免资源泄漏情况的发生。示例如下:
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"UTF-8"))){ String line = null; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
通过以上处理,可以避免FileInputStream读取文件产生乱码的问题,并确保正确地处理非默认编码格式的文本文件。
标签:
相关文章
最新发布
- springboot~3.x项目中使用集成测试
- Java测试类、工具类与JavaBean对比解析
- SpringBoot-日志
- springboot~http2的支持
- 解疑释惑 - 日志体系之 slf4j + logback 组合(一)
- Web server failed to start. Port 8080 was already in use. 端口被占用
- Springboot 项目配置多数据源
- 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 05
- 剑指offer-23、搜索⼆叉树的后序遍历序列
- 一个表示金额的数字是 100000000L,这是多少米?