所以我在那里我试图读取文件里逐行这个相当简单的代码:爪哇 - 逐行读取一个txt文件行
if(new File(filesDir).listFiles() != null){
for(File file : new File(filesDir).listFiles()){
try {
Stream<String> stream = Files.lines(Paths.get(file.getAbsolutePath()));
for(int i = 0 ; i < stream.toArray().length; i++){
System.out.println(stream.toArray()[i]);
}
stream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但是,当它到达Sysout
它抛出异常:
异常在线程“主要” java.lang.IllegalStateException:java.lang.IllegalStateException:流已经在操作或由封闭
引起:java.lang.IllegalStateException:流已经被OPERAT编辑或关闭
我找到的每个示例都使用Lambda表达式,我不认为这是唯一的方法,还是它?
不要调用'listFiles()'两次。这是一个磁盘密集型操作。 – EJP
@EJP如何调用toArray()每行输入两次(假设工作:) –
您可以使用['Files.list'](https://docs.oracle.com/javase/8/docs/api /java/nio/file/Files.html#list-java.nio.file.Path-)而不是使用'listFiles()'。 – Tunaki