我必须遵循为每个文件返回0的代码。我想知道使用Files / Path获取文件大小的正确方法是什么。
import java.nio.file.Files;
import java.nio.file.Path;
Stream<Path> files = Files.list(new File("/tmp").toPath());
files.filter(p -> p.getFileName().toString().endsWith(".test"))
.filter(p -> p.getFileName().toFile().length() > 0)
.filter(p -> Files.isRegularFile(p))
.forEach(filePath -> {
Log.info("Size of file KB :: " +
String.valueOf(
filePath.getFileName().toFile().length() / 1024));
});
答案 0 :(得分:0)
正如@Thomas直接使用p.toFile()所建议的那样.length()工作正常:
try (Stream<Path> files = Files.list(new File("/tmp").toPath())) {
files.filter(p -> p.getFileName().toString().endsWith(".crc"))
.filter(p -> p.toFile().length() > 0)
.filter(p -> Files.isRegularFile(p))
.forEach(filePath -> {
Log.info("Size of file B :: " + String.valueOf(filePath.toFile().length()));
});
} catch (IOException ex) {
Log.error("IOE");
}
结果显示正确的字节大小:
2017-03-21 13:27:17 INFO GenerateTestData:353 - Size of file B :: 824
2017-03-21 13:27:17 INFO GenerateTestData:353 - Size of file B :: 952
2017-03-21 13:27:17 INFO GenerateTestData:353 - Size of file B :: 964
2017-03-21 13:27:17 INFO GenerateTestData:353 - Size of file B :: 824
2017-03-21 13:27:17 INFO GenerateTestData:353 - Size of file B :: 684