Получите размер папки или файла

Попробуйте использовать nlargest

maxData = all_data.groupby(['Id'])[features].apply(lambda x:x.nlargest(2)[1]).reset_index(drop=True)

99
задан Frédéric Hamidi 6 June 2014 в 20:07
поделиться

5 ответов

java.io.File file = new java.io.File("myfile.txt");
file.length();

Это возвращает длину файла в байтах или 0 , если файл не существует. Нет встроенного способа получить размер папки, вам придется прогуляться по дереву каталога рекурсивно (используя ListFiles () метод файлового объекта, который представляет каталог) и накапливаться Размер каталога для себя:

public static long folderSize(File directory) {
    long length = 0;
    for (File file : directory.listFiles()) {
        if (file.isFile())
            length += file.length();
        else
            length += folderSize(file);
    }
    return length;
}

Предупреждение : Этот метод недостаточно надежный для производства. каталог .ListFiles () может вернуться NULL и вызвать nullpointexception . Кроме того, это не учитывает симликовые ссылки и, возможно, имеет другие режимы неудачи. Используйте Этот метод .

183
ответ дан 24 November 2019 в 04:56
поделиться

Можно использовать Apache Commons IO для нахождения размера папки легко.

, Если Вы находитесь на знатоке, добавьте следующую зависимость в Вашем pom.xml файл.

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

, Если не вентилятор Знатока, загрузите следующую банку и добавьте его к пути к классу.

https://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar

public long getFolderSize() {

    File folder = new File("src/test/resources");
    long size = FileUtils.sizeOfDirectory(folder);

    return size; // in bytes
}

Для получения размера файла через палату общин IO

File file = new File("ADD YOUR PATH TO FILE");

long fileSize = FileUtils.sizeOf(file);

System.out.println(fileSize); // bytes

Это также достижимо через Google Guava

Для Знатока, добавьте следующее:

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version>
</dependency>

, не используя Знатока, добавьте следующее к пути к классу

https://repo1.maven.org/maven2/com/google/guava/guava/28.1-jre/guava-28.1-jre.jar

public long getFolderSizeViaGuava() {
        File folder = new File("src/test/resources");
        Iterable<File> files = Files.fileTreeTraverser()
                .breadthFirstTraversal(folder);
        long size = StreamSupport.stream(files.spliterator(), false)
                .filter(f -> f.isFile())
                .mapToLong(File::length).sum();

        return  size;
    }

Для получения размера файла,

 File file = new File("PATH TO YOUR FILE");
 long s  = file.length();
 System.out.println(s);
0
ответ дан 24 November 2019 в 04:56
поделиться

file.length () ( javadoc ).

Обратите внимание, что это не работает для каталогов, или не гарантируется работать.

Для каталога, что вы хотите? Если это общий размер всех файлов под ним, вы можете рекурсивно пройти детей, используя file.list () и и file.isdirectory () и суммируют их размеры.

3
ответ дан 24 November 2019 в 04:56
поделиться

Файл объект имеет длину метода:

f = new File("your/file/name");
f.length();
3
ответ дан 24 November 2019 в 04:56
поделиться
public static long getFolderSize(File dir) {
    long size = 0;
    for (File file : dir.listFiles()) {
        if (file.isFile()) {
            System.out.println(file.getName() + " " + file.length());
            size += file.length();
        }
        else
            size += getFolderSize(file);
    }
    return size;
}
10
ответ дан 24 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: