Witam,
Mam pewien dziwny problem. A mianowicie, mam fragment kodu w którym ma zostać wyświetlona zawartość pulpitów wszystkich użytkowników. Wygląda to tak:
File usersDir = new File("C:\\Users");
ArrayList<File> users = new ArrayList<>(4); //tablica przechowująca katalogi użytkowników
users.addAll(Arrays.asList(usersDir.listFiles()));
for (File user : users)
{
ArrayList<File> userFiles = new ArrayList<>(20); //to tablica przechowująca wszystkie pliki z katalogu C:\Users
ArrayList<File> userDirs = new ArrayList<>(20); //to tablica przechowująca wszystkie katalogi z katalogu C:\Users
userFiles.addAll(Arrays.asList(user.listFiles())); //tu dodajemy pliki do pierwszej tablicy
for (File f : userFiles)
{
if (f.isDirectory())
{
userDirs.add(f); //a tu wybieramy tylko katalogi i dodajemy do drugiej tablicy
}
}
for (File d : userDirs)
{
if ("Pulpit".equals(d.getName()) || "Desktop".equals(d.getName()))// tu sprawdzamy czy w katalogu
//użytkownika jest katalog "Desktop" lub "Pulpit"
{
ArrayList<File> desktop = new ArrayList<>(50);//to tablica do plików na pulpicie
desktop.addAll(Arrays.asList(d.listFiles()));//a tu mam problem. Opis za kodem.
for (File f : desktop)
{
System.out.println(f.getName());
}
}
}
}
Przy próbie umieszczenia wszystkich plików z pulpitu w liście tablicowej metoda Arrays.asList() wyrzuca mi NullPointerException, bo d.listFiles jest null. Okazało się że ta metoda wcale nie bierze pod uwagę MOJEGO katalogu "Desktop" tylko katalogu C:\Users\Default\Desktop. U mnie jest tylko jeden użytkownik, MainUser. Okazuje się, że tablica users zawiera tylko jeden element, C:\Users\Default. Tak jakby mojego katalogu w ogóle nie widziała. Co to może być?