Tak jak w temacie. Potrzebuję wczytać wszystkie nazwy i rozmiary plików w wybranym katalogu , aby później zapisać te dane w bazie danych.
A jest jakiś odpowiednik FileChooser dla katalogu?
W starym stylu:
File[] files = new File(katalog).listFiles();
for(File file: files)
{
// tutaj metody
file.getName();
file.length();
file.getAbsoluteName();
file.isFile(); //jeśli chcesz pominąć podkatalogi
}
...
@bogdans: Nie no, bez przesady...
@Mattii4211: https://docs.oracle.com/javase/7/docs/api/java/nio/file/DirectoryStream.html
Na obiekcie fc
typu JFileChooser
wywołaj
FileFilter filter = new OnlyDirectory();
fc.setAcceptAllFileFilterUsed(false);
fc.setFileFilter(filter);
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
class OnlyDirectory extends FileFilter
{
public boolean accept(File f)
{
return f.isDirectory();
}
//--------------------
public String getDescription()
{
return "Katalogi";
}
}
bogdans napisał(a):
W starym stylu:
File[] files = new File(katalog).listFiles(); for(File file: files) { // tutaj metody file.getName(); file.length(); file.getAbsoluteName(); file.isFile(); //jeśli chcesz pominąć podkatalogi } ...
w sensie katalog to ścieżka do katalogu?
Tak
Ok dzięki za odpowiedzi :)
Jeszcze jedno pytanie mam już bazę w SQLite i chcąc dodać nazwę i rozmiar mam kod:
String sciezka = args[0];
String nazwa;
int rozmiar;
Connect c = new Connect();
File[] files = new File(sciezka).listFiles();
for(File file: files)
{
nazwa = file.getName();
rozmiar = (int)file.length();
c.insertDane(nazwa, rozmiar);
}
tylko, że Connect c = new Connect(); zwraca błąd:
No enclosing instance of type program is accessible. Must qualify the allocation with an enclosing instance of type program(e.g. x.new A() where x is an instance of program).
I nie rozumiem, dlaczego, bo jak c.insertDane(nazwa, rozmiar); jest poza pętlą to jest ok.
I jeszcze jedno: ścieżka do pliku ma być bezwzględna czy to nie ma znaczenia?