@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
- size += attrs.size();
+ // size is specified on regular files only
+ // https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/BasicFileAttributes.html#size--
+ if (attrs.isRegularFile()) {
+ size += attrs.size();
+ }
return FileVisitResult.CONTINUE;
}
}
FileUtils2.sizeOf(path);
}
+ @Test
+ public void sizeOf_ignores_size_of_non_regular_files() throws IOException {
+ File outside = temporaryFolder.newFile();
+ FileUtils.write(outside, "outside!!!", UTF_8);
+ File dir = temporaryFolder.newFolder();
+ File child = new File(dir, "child1.txt");
+ FileUtils.write(child, "inside!!!", UTF_8);
+ File symlink = new File(dir, "child2.txt");
+ Files.createSymbolicLink(symlink.toPath(), outside.toPath());
+
+ assertThat(FileUtils2.sizeOf(dir.toPath()))
+ .isPositive()
+ .isEqualTo(FileUtils2.sizeOf(child.toPath()));
+ }
+
private void expectDirectoryCanNotBeNullNPE() {
expectedException.expect(NullPointerException.class);
expectedException.expectMessage("Directory can not be null");