Java Scanner 无法正常读取文件
问题
今天在测试程序时发现用Scanner读取文件时不能正常读取。代码如下:
Scanner scanner = new Scanner(sourceFile);
while (scanner.hasNext()) {
String str1 = scanner.nextLine();
原因分析
通过查询源码,发现发MalformedInputException 就是整个问题的根本原因。以下是甲骨文官方文档对该异常的介绍:
Checked exception thrown when an input byte sequence is not legal for given charset, or an input character sequence is not a legal sixteen-bit Unicode sequence. ———————————————— 版权声明:本文为CSDN博主「David Chou」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/vandavidchou/article/details/112389613
解决方法
通过设置编码,可处理该问题。代码如下:
String enconding = "UTF-8";
Scanner scanner = new Scanner(sourceFile,enconding);
while (scanner.hasNext()) {
String str1 = scanner.nextLine();
Java中没有标准的字符集,可以通过设置字符集UTF-8解决。