Java 如何避免Files.lines()在日文文本上引发格式错误的InputException?

Java 如何避免Files.lines()在日文文本上引发格式错误的InputException?,java,utf-8,character-encoding,Java,Utf 8,Character Encoding,我的代码抛出异常 Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 at java.io.BufferedReader$1.hasNext(BufferedReader.java:574) at java.util.Iterator.forEachRemaining(Iterator.java:1

我的代码抛出异常

Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
at java.io.BufferedReader$1.hasNext(BufferedReader.java:574)
at java.util.Iterator.forEachRemaining(Iterator.java:115)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEachOrdered(ReferencePipeline.java:590)
执行此行时

Files.lines(in.toPath()).forEachOrdered(new Consumer<String>() {
    @Override
    public void accept(String s) {
        //stuff
    });
Files.lines(in.toPath()).forEachOrdered(新使用者(){
@凌驾
公共无效接受(字符串s){
//东西
});
在notepad++中打开时导致此行为的文件如下所示

当然,由于编码的原因,文本是乱码的,如果我从“encoding”(编码)菜单中选择“Convert to UTF-8”(转换为UTF-8),那么它将正确显示


这让我假设UTF-8是正确的编码,但是根据Java文档,Files.lines()默认使用UTF-8编码(它相当于Files.lines(path,StandardCharsets.UTF_8))但是当读取带有日语文本的文件时,它仍然会断开,我应该如何处理它?

可能是您的文件包含了什么?该文件可能是UTF-8或其他日语编码。我有类似的问题。在调试器中,我找到了导致它的原因。
java.nio.HeapByteBuffer
表示包含值为
-45
(对于输入字符串
MÓDULOS
)。然后
sun.nio.cs.UTF_8
抛出异常原因
isNotContinuation
测试失败。测试是
返回(var0&192)!=128;
。我不知道如何解决这个问题。