我有一段简单的代码可以创建两个目录和两个文件,然后继续使用更多文件填充目录。在本地计算机(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());
我已经确认目录都已正确创建。当然,它不是一个权限问题,因为该程序继续使用相同的pDir
在dDir
和.createNewFile()
创建文件。
这里是否有任何明显的错误,或者为什么它可以与本地计算机上的文件一起使用而不是通过NFS?
由于
答案 0 :(得分:1)
您的问题是您使用的文件名:
x = new File(outputDirectory + File.separator + "d_*_1");
Windows不接受文件名中的星号“*”。