listFiles() gibt null zurück, wenn es nicht sollte. Es verwendet, um richtig zu arbeiten, bis vor kurzem und noch nicht geändert wurde
public static void main(String[] args) throws InterruptedException {
//TODO Auto-generated method stub
while(true)
{
ArrayList<File> wallpapers = new ArrayList<File>();
File dir = new File("C:/Windows/System32/oobe/info/backgrounds/");
if(dir.listFiles() == null)
System.out.println("Empty");
for(File img : dir.listFiles())
{
if(img.getName().endsWith(".jpg") && img.getName() != "backgroundDefault.jpg")
wallpapers.add(img);
}
File current = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
int i = 1;
for(File img : wallpapers)
{
File f = new File("C:/Windows/System32/oobe/info/backgrounds/"+ i++ +".jpg");
current.renameTo(f);
File file = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
img.renameTo(file);
Thread.sleep(60000);
}
}
} }
}
Dieser code ändert das Hintergrundbild des Windows-Log-In-Bildschirm jede minute.
listFiles() gibt null zurück bei dir und ich bekomme eine NullPointerException(Datei img : dir.listFiles()). Ich dachte, es gibt möglicherweise ein problem mit dem Datei-Rechte, also habe ich versucht, die Datei zu ändern Pfad zu einem Verzeichnis habe ich auf meinem Desktop und es funktioniert gut. Also ich gehe davon aus, dass ich keinen Zugriff auf die system-Dateien, weil mein Programm nicht genug Rechte habe. Lassen Sie mich auch genau, dass dieser code funktioniert einwandfrei, bis vor kurzem. Es wurde noch nicht geändert. Ich habe gerade herausgefunden, dass mein Log-In Wallpaper ändert sich nicht mehr.
Auch wenn das Programm nicht funktioniert, konnte ich nicht ändern Sie den Dateinamen, wenn ich startete das Programm über Eclipse, aber ich würde exportieren Sie Sie als .jar und planen es mit der Aufgabenplanung mit höchsten Privilegien zu geben, die er admin-Rechte und es funktionierte ohne Probleme, bis vor kurzem. Ich habe auch versucht, das ignorieren der Fehler, die denken, Sie wären auf Rechte verknüpft und versucht zu starten, mein ausführbare jar-Datei mit höchsten Privilegien über den Task-Scheduler und auch über eine batch-Datei. Ich habe sogar versucht, starten Sie das Glas durch eine cmd-I öffnen mit Administrator-Rechten ohne Erfolg, er sagt immer noch NullPointerException in der cmd. Ich bin irgendwie verloren und wäre für jede Hilfe dankbar.
InformationsquelleAutor Ryuu | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter Windows 7 (und höher) der Prozess mit erhöhten Berechtigungen ausführen zu schreiben zu
C:/Windows
und ähnliche Verzeichnisse. Aber wenn das war das problem, es würde eine andere Fehlermeldung.Was ich vermute:
Wenn Sie eine 32-bit-JVM, unter 64-bit-Windows -
new File("C:/Windows/System32")
aufC:\Windows\SysWOW64
und es gibt keineinfo
-Ordner unterC:\Windows\SysWOW64\oobe
Als test:
gut läuft mit 64-bit-JRE und wirft
NullPointerException
unter 32-bit-JRE auf Windows 7 64-bit.Also vielleicht hast du oder einer anderen Anwendung vor kurzem installiert eine 32-bit-jre oder verändert Sie Ihren Pfad, um auf einem 32-bit-jre und so brach Ihre Anwendung.
fühlen Sie sich frei, zu akzeptieren, zu Antworten 😉
Kam gerade über das gleiche problem, aber mit einem 64-bit-JDK auf 64-bit Win 7, wo
C:\Documents and Settings
zurücktrue
zuisDirectory()
, gibt abernull
(nicht mal eine leereFile
array!) zu einemlistFiles()
Aufruf in einer RCP-desktop-app. Alles, was Sie tun können, ist fügen Sie ein Häkchen, denke ich...InformationsquelleAutor piet.t
Es "gibt null zurück, wenn diese abstrakte Pfadname nicht bezeichnen, ein Verzeichnis, oder, wenn eine I/O-Fehler Auftritt". Also entweder es ist nicht ein Verzeichnis, oder eine I/O-Fehler ist aufgetreten.
Müssen Sie code defensiv gegen diese Möglichkeit, anstatt nur contra-faktisch behaupten, dass "es sollte nicht". Es hat und es kann.
Vielleicht sollten Sie entfernen Sie die nachfolgende
/.
Es ist also nicht ein Verzeichnis, zumindest für Sie. Vielleicht ist es ein Berechtigungsproblem.
InformationsquelleAutor user207421
Nicht mit strings vergleichen mit
==
Nutzung entspricht
InformationsquelleAutor Paul Samsotha
Wenn Sie eine
NullPointerException
auf der Liniefor(File img : dir.listFiles())
das bedeutet, dass die variabledir
istnull
und Sie können nicht nennenlistFiles()
. Haben Sie versucht, zu Debuggen und zu sehen, ob vielleicht das Verzeichnis Pfad geändert hat oder dassdir
ist in der Tat richtig eingestellt?dir ist in der Tat null. Ich habe versucht, die Kontrolle, wenn es ein Verzeichnis mit dir.isDirectory (), die false zurückgibt. Das kann ich nicht erklären, weil es ist ein Verzeichnis-und Pfadname richtig ist. Und außerdem ist es verwendet, um zu arbeiten, wie es bis vor kurzem. Weder das Verzeichnis noch der code geändert wurden.
Ich werde Bearbeiten Sie die sehr unglücklichen Begriff 'wahrscheinlich' raus, dann entschuldigen Sie meine inexpertise in der englischen Sprache.
Sie haben einige Beweis darüber, wer downvoted diese Frage? Oder sind Sie nur spekulieren sinnlos?
Es war Spekulation. Da Sie die einzigen waren, die man kommentieren negativ auf meine Antwort, dass war mein Abzug aber offenbar nicht sinnlos, da es mich wo/was ich wollte 🙂 aber bitte entschuldigen Sie mich, wenn ich kam ganz aggressiv.
InformationsquelleAutor Octoshape