package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class TestTest {
public static void main(String[] args) throws IOException {
// BufferedReader br=Files.newBufferedReader(Paths.get("data/tmp2.txt"));
BufferedReader br=Files.newBufferedReader(Paths.get("/home/username/Documents/TokenizeThenSplitParallelDeletePatternLTZero.txt"));
//BufferedReader br=Files.newBufferedReader(Paths.get("/home/username/Documents/temp.txt"));
int cnt=0;
while(br.ready()){
String text = br.readLine();
cnt++;
if(cnt>=47334){
System.out.println(text);
}
System.out.println("cnt = "+cnt);
}
}
}
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 2
at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at test.TestTest.main(TestTest.java:17)
百度之后的结果都是对java NIO Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1这种的回答。我的文件是utf-8编码的,文件很大,所以就没有上传了。但是当我将第一行到出错那行后面一点儿的所有内容,复制到一个新文件temp.txt中,再次运行,又不会出错了,不知道为什么。
原来的代码需要导入下面的类
import java.nio.file.Files;
import java.nio.file.Paths;
但是换成这种形式
import java.io.File;
import java.io.FileInputStream;
就是正常的,没有出错。
而且还有朋友说,将原来的文本里面,将出错的那一行,删去一个字符也是不会报错的。很奇怪的问题。不知道为啥用nio.file.Files就是有问题的