Получение списка файлов в каталоге, который имеет много файлов в Java - PullRequest
1 голос
/ 11 апреля 2011

Будет ли использование метода list() в классе File проблем, если это каталог с тысячами файлов в нем?Может ли это привести к тому, что возвращаемый массив использует слишком много памяти?

Какая альтернатива есть?

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

Вряд ли. Вы должны быть в порядке, используя File.list(). Тысячи имен файлов не так много с точки зрения памяти.

Что касается альтернатив, в Java нет "лучших способов" сделать это, и, как я уже сказал, они вам, вероятно, не понадобятся.

0 голосов
/ 22 июня 2013
import java.io.*;
import java.util.*;

public class prog14{
    public static void main(String[] args){
        String path = "";
        System.out.print("Enter the folder path: ");
        Scanner scn = new Scanner(System.in);
        path = scn.nextLine();
        File[] files = new File(path).listFiles();
        for (File file : files) 
        {
            System.out.println(file.getName());
        }
    }
}
0 голосов
/ 11 апреля 2011

Я могу ошибаться, но, конечно, нет никакого способа сэкономить объем возвращаемых данных.Возвращенный массив всегда будет использовать количество байтов, необходимое для хранения того же количества строк, что и файлы в каталоге.Единственные способы уменьшить использование памяти, которые я вижу, - это использовать сложную технику сжатия строк или просто организовать файлы в папки, а затем использовать метод списка только для тех, которые вам нужны.Надеюсь, это поможет.

0 голосов
/ 11 апреля 2011

Маловероятно (это будет означать выделение нескольких мегабайт, сверху).Попробуйте сначала, ищите обходные пути, только если это реальная проблема:)

...