【发布时间】:2018-02-01 08:27:50
【问题描述】:
我有一段简单的代码,它创建了两个目录和两个文件,然后继续用更多文件填充目录。在本地机器 (Ubuntu) 上运行文件时,代码会正常运行。
但是,我们在 Windows 服务器上有很多可以通过 NFS 访问的数据,所以这些人喜欢 cd 到服务器上的目录并直接从那里运行代码。这就是问题发生的时候。使用.mkdirs() 可以很好地创建这两个目录,但是创建这两个文件的.createNewFile( 会引发IOException 并带有消息No such file or directory 和原因null。
代码如下:
private File pDir;
private File dDir;
private File x;
private File headerFile;
创建,对打印语句感到抱歉,我无法在 Intellij 中为此运行调试器
pDir = new File(outputDirectory + File.separator + "p");
dDir = new File(outputDirectory + File.separator + "d");
pDir.mkdirs();
dDir.mkdirs();
x = new File(outputDirectory + File.separator + "d_*_1");
headerFile = new File(outputDirectory + File.separator + "header.Xsam");
System.out.println(pDir.toString());
System.out.println("exists? " + pDir.exists());
System.out.println(dDir.toString());
System.out.println("exists? " + dDir.exists());
/*System.out.println(x.toString());
System.out.println("exists? " + x.exists());
System.out.println(headerFile.toString());
System.out.println("exists? " + headerFile.exists());*/
try {
x.createNewFile();
System.out.println("x created");
headerFile.createNewFile();
System.out.println("header created");
}catch(IOException ex){
System.out.println("error making x or header file: " + ex.getMessage() + " " + ex.getCause());
}
System.out.println(pDir.toString());
System.out.println("exists? " + pDir.exists());
System.out.println(dDir.toString());
System.out.println("exists? " + dDir.exists());
System.out.println(x.toString());
System.out.println("exists? " + x.exists());
System.out.println(headerFile.toString());
System.out.println("exists? " + headerFile.exists());
我已验证所有目录均已正确创建。当然这不可能是权限问题,因为程序继续使用相同的.createNewFile() 在pDir 和dDir 中创建文件。
这里是否有任何明显的错误,或者为什么它可以处理本地机器上的文件而不是 NFS 上的文件?
谢谢
【问题讨论】: