2013-08-26 16 views
5

Potrzebuję zachować w pamięci wszystkie bezwzględne ścieżki nazw plików w danym katalogu.uzyskać wszystkie bezwzględne ścieżki plików w danym folderze

myDirectory.list() - pobiera tylko łańcuchy znaków String [] (bez ich bezwzględnych ścieżek).

Nie należy używać obiektu File, ponieważ zużywa on więcej pamięci.

Ostatnia rzecz - mogę używać kolekcji apache itp. (Ale nie znalazłem nic przydatnego do tego).

Odpowiedz

0

Czy katalog myDirectory nie zawiera wszystkich tych plików? Jeśli tak, po prostu połącz ścieżkę w jednostce myDirectory z każdą z komórek z powrotem zwracaną przez tablicę myDirectory.list().

+0

Dzięki. masz na myśli - zrobić kolejną iterację na MyDirectory.list() i połączyć ją z nowym String []? czy jest coś ciekawego po wyjęciu z pudełka? – user1025852

+0

Jaki jest typ myDirectory? –

+0

Obiekt pliku ..... – user1025852

8
String directory = <your_directory>; 
File[] files = new File(directory).listFiles(); 
for(File file : files){ 
    if(file.isFile()){ 
    System.out.println(file.getAbsolutePath()); 
    } 
} 

To działa, i muszę powiedzieć, że jestem zdezorientowany, gdy mówisz, że nie chce korzystać z pliku obiektów, ale co działa, tak myślę.

+0

Dzięki, doceniam to. Korzystanie z obiektu File jest o wiele bardziej kosztowne, niż przechowywanie łańcucha znaków. Sprawa zajmie się folderem z plikami 100K Obawiam się braku pamięci itd. Tak więc - szukam schludnego rozwiązania, aby uzyskać String [] wszystkich ścieżek bezwzględnych plików w folderze – user1025852

+0

Jeśli znasz już ścieżkę główną i względne ścieżki twoich plików i nie chcesz wykonywać kolejnej iteracji, aby połączyć te struny, a także nie chcesz używać obiektów File, bo boisz się wyczerpania pamięci, prawdopodobnie powinieneś rozbić tablicę na mniejsze tablice i przetwarzaj je osobno, wykonując podane czynności. – victorantunes

+0

dziękuję, doceń to – user1025852

Powiązane problemy