java8 - java.nio.charset.MalformedInputException: Input length = 2
大家讲道理
大家讲道理 2017-04-18 10:45:13
0
2
1508
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
小葫芦
public static void main(String[] args) throws IOException {
        File file = new File("/home/yangxiaohuan/Documents/TokenizeThenSplitParallelDeletePatternLTZero.txt");
        InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");// 考虑到编码格式
        BufferedReader br = new BufferedReader(read);
        int cnt=0;
        while(br.ready()){
            String text = br.readLine();
            cnt++;
            if(cnt>=47334){
                System.out.println(text);
                }
            System.out.println("cnt = "+cnt);
            }
        }
}

原来的代码需要导入下面的类
import java.nio.file.Files;
import java.nio.file.Paths;
但是换成这种形式
import java.io.File;
import java.io.FileInputStream;
就是正常的,没有出错。
而且还有朋友说,将原来的文本里面,将出错的那一行,删去一个字符也是不会报错的。很奇怪的问题。不知道为啥用nio.file.Files就是有问题的

PHPzhong

谢邀。你可能搞错了IO和NIO之间的区别,最基本的一点是IO是面向流的,NIO面向缓冲区的,而你的代码很明显是使用了BufferedReader以及InputStreamReader流,如果使用nio,readLine根本不能读取,NIO只能读取缓冲区,扫描缓冲区的大小,并且在解析数据时,比起阻塞IO流,NIO需要付出更大的代价。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板