でtxtファイルの行を読んだから、私は行毎にファイルを読み込むしようとしているこの非常に単純なコードを持っている:Javaのライン
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を:ストリームが既にoperatされていますエドワード・クローズ
ラムダ式が使用されているすべての例は、私はそれが唯一の方法だとは思わないのですか?
'listFiles()'を2回呼び出さないでください。これはディスクを大量に使用する操作です。 – EJP
@EJP入力行ごとにtoArray()を2回呼び出す方法(作業したと仮定して) –
['Files.list'](https://docs.oracle.com/javase/8/docs/api)を使用できます。 /java/nio/file/Files.html#list-java.nio.file.Path-) 'listFiles()'を使用する代わりに。 – Tunaki