为什么错误? (java.nio.charset.MalformedInputException:输入长度= 1)

时间:2017-03-27 07:13:35

标签: java

Java代码:

 String fileName = "settings.txt";

 String text = "AdresProgramm =";
 String delimiter = ";";

 Optional<String> result =
 Files
     .lines(Paths.get(fileName))
     .filter(e -> e.contains(text))
     .map(e -> {
         int start = e.indexOf(text);
         int end = e.indexOf(delimiter, start + text.length());

             return e.substring(start, end);
     })
     .findFirst();

 result.ifPresent(System.out::println);

文件内容:AdresProgramm =D:\\ЭСЧФ\;

  

java.nio.charset.MalformedInputException:输入长度= 1

3 个答案:

答案 0 :(得分:0)

由于您使用的是西里尔字母,这看起来像编码问题。

认为ISO-8859-1编码显然适用于欧洲字符。不确定UTF-8是否可以正常工作。

你看过this页吗?

答案 1 :(得分:0)

Files.
lines(Paths.get(fileName), Charset.forName("windows-1251"))

答案 2 :(得分:0)

这不是答案,但对编码读取大型机文件的其他面对此问题的人可能有用。

按如下所示使用它:

let result = await fetch(url)
result = await result.json()
return result.articles.slice(0,20);

IBM将其称为代码页819或CP819。如果您要处理来自大型机系统的扩展二进制格式文件,则可以节省生命。