gpt4 book ai didi

java - listFiles() 在不应该返回 null 时返回。直到最近它都可以正常工作并且没有被修改

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:43 24 4
gpt4 key购买 nike

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);
}

}
} }
}

此代码每分钟更改一次 Windows 登录屏幕的背景图像。listFiles() 为 dir 返回 null,我在 for(File img : dir.listFiles()) 上得到 NullPointerException。我认为文件权限可能有问题,所以我尝试将文件路径更改为桌面上的目录,但它工作正常。所以我假设我无法访问系统文件,因为我的程序没有足够的权限。我还要明确指出,这段代码直到最近都可以正常工作。它没有被修改。我刚刚发现我的登录墙纸不再改变了。即使程序确实可以运行,当我通过 Eclipse 启动程序时我也无法修改文件名,但我会将其导出为 .jar 并使用具有最高权限的任务计划程序对其进行调度以授予其管理员权限并且它可以正常运行直到最近。我还尝试忽略错误,认为它们与访问权限有关,并尝试通过任务计划程序并使用批处理文件以最高权限启动我的可执行 jar。我什至尝试通过使用管理员权限打开的 cmd 启动 jar,但无济于事,它仍然在 cmd 中显示 NullPointerException。我有点迷路了,希望得到任何帮助。

最佳答案

在 Windows 7(及更高版本)上,该进程必须以提升的权限运行才能写入 C:/Windows和类似的目录。但如果这是问题所在,则会导致出现不同的错误消息。

我怀疑:在 64 位 Windows 下运行 32 位 JVM 时 new File("C:/Windows/System32")将指向 C:\Windows\SysWOW64并且没有 info -C:\Windows\SysWOW64\oobe 下的文件夹

作为测试:

public static void main(String[] args) {
File sysdir = new File("C:/Windows/System32/oobe/info");
for(File file:sysdir.listFiles()) {
System.out.println(file.getName());
}
}

在 64 位 JRE 上运行良好并抛出 NullPointerException在 64 位 Windows 7 上的 32 位 JRE 下。

因此,也许您或其他应用程序最近安装了 32 位 jre 或更改了您的路径以指向 32 位 jre,从而破坏了您的应用程序。

关于java - listFiles() 在不应该返回 null 时返回。直到最近它都可以正常工作并且没有被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com