带有BufferedReader的Java-MalformedInputException

时间:2013-09-03 06:51:38

标签: java file-io mysqldump

我对Java有点新,所以我绝对不知道如何解决以下问题。我正在编写一个小的cli程序来处理mysql-dump-files。在(希望)最后一次Junit测试中,处理了一个“更大”(990.3kB)的Mysql文件,只有这个文件才会出现这个错误:

java.nio.charset.MalformedInputException: Input length = 1

错误消息没有docs中的说明给我一个热点来修复它。如果我用Kate打开文件,则显示错误:

screenshot of the error-message from kate

现在代码*看起来像:

String line;
BufferedReader reader = Files.newBufferedReader(in, Charset.forName( "UTF-8" ) );

while( ( line = reader.readLine() ) != null )
{
   //processing stuff goes here
}

*调用reader.readLine()是导致错误的原因。

我想我需要改变如何阅读文件的方式,但这只是猜测并希望在这里得到一些好的帮助。如果任何人都有一个资源链接,它提供了一些背景资料,那也很好。

提前致谢!

修改

经过一些搜索后,我可以通过将上面的代码更改为:

来设法使Java读取该文件
BufferedReader reader = 
    new BufferedReader( 
        new InputStreamReader( 
            new FileInputStream( in.toFile() ) ) );

这是解决潜在charset问题的方法吗?这会引导我解决其他潜在问题吗?我真的很感激有关细节的一些解释......

1 个答案:

答案 0 :(得分:-1)

问题在于凯特

设置 - >配置 - >打开/保存

设置:行长度限制为零。

与其他KDE编辑器一起知道issue

修改

错过了java异常。该异常的可能原因是您获取 UTF-8 编码文件。

  

当输入字节序列不是时,抛出MalformedInputException   给定字符集合法,或输入字符序列不合法   十六位Unicode序列。