沮丧。这适用于开发盒,但不适用于生产盒。这似乎是权限问题,但我无法假设(因为网络地图对所有人开放,并且可以从两台机器访问)。
我在属性文件中有一个目录:
在我的代码中,我从属性文件中正确读取了目录。这是代码:
File dir = new File(dirFromProperty); // \\\\main\\sub
System.out.println("dirFromProperty = " + dirFromProperty);
System.out.println("dir File = " + dir); //looks right
System.out.println("dir.isDirectory = " + dir.isDirectory()); //false?
System.out.println("dir.isFile = " + dir.isFile()); //false?!
System.out.println("dir.isHidden = " + dir.isHidden()); //false
if(dir.isDirectory()) {
//never gets here
}
值得注意的是:
有什么想法吗?我很想弄清楚发生了什么事。
修改
目前,似乎这是Windows任务计划程序的一个问题。我可以从CMD运行应用程序。从任务管理器,它无法识别网络路径?
第二次修改:
我已经为我的问题添加了解决方案。这与Java无关,它似乎与Windows任务设置相关,并通过Java中的File类访问文件。
答案 0 :(得分:0)
它看起来不像Java问题。这是Windows的问题。只需用常规Windows进程替换您的Java程序,您就会看到相同的结果。只需从此过程中检索并显示文件/目录属性,存储它们,进行分析,您将看到与Windows的不同之处。
我的猜测是,任务计划程序在另一个ID /访问权限下运行,该ID /访问权限没有对该网络共享的适当访问权限。所描述的所有迹象都表明了这一假设。
答案 1 :(得分:0)
经过多次挖掘,我得出的结论是,问题与生产服务器上的任务本身有关。
出于某种原因,当我使用以下设置时,File类没有将网络路径识别为目录:
当我取消选中“不存储密码”并允许其存储密码时,会识别网络路径。我假设这是因为网络路径确实要求您登录到网络(每个服务器都是)。我假设这个属性传递了一个空密码,因此没有目录。
这是所有假设 - 但是当您取消选中商店密码时,我可以100%确认它有效。