如何获取文件大小withPath?

时间:2017-03-21 12:04:35

标签: java nio

我必须遵循为每个文件返回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));
        });

1 个答案:

答案 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