为什么会出错?(java.nio.charset.MalformedInputException:输入长度=1)
Java代码:为什么会出错?(java.nio.charset.MalformedInputException:输入长度=1),java,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 s
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);
String fileName=“settings.txt”;
String text=“adresprogram=”;
字符串分隔符=“;”;
可选结果=
文件夹
.line(路径.get(文件名))
.filter(e->e.contains(文本))
.map(e->{
int start=e.indexOf(文本);
int end=e.indexOf(分隔符,start+text.length());
返回e.子串(开始、结束);
})
.findFirst();
result.ifPresent(System.out::println);
文件内容:adresprogram=D:\\CharStyleСЧФ\代码>
java.nio.charset.MalformedInputException:输入长度=1
这看起来像是编码问题,因为您使用的是西里尔字母
认为ISO-8859-1编码显然适用于欧洲字符。不确定UTF-8是否有效
您看过第页了吗?这不是一个答案,但对于其他在编写代码读取大型机文件时遇到此问题的人可能会很有用
如下所示:
List<String> allLines = Files.readAllLines(path,StandardCharsets.ISO_8859_1);
List allLines=Files.readAllLines(路径,StandardCharsets.ISO_8859_1);
IBM称之为代码页819或CP819。如果您正在处理来自大型机系统的扩展二进制格式文件,这将是一个救命稻草。这似乎是一个编码问题,我认为这个答案需要解释一下该字符集工作的“原因”
List<String> allLines = Files.readAllLines(path,StandardCharsets.ISO_8859_1);