Java createNewFile无法在本地网络上运行

时间:2018-02-01 08:27:51

标签: java io nfs

我有一段简单的代码可以创建两个目录和两个文件,然后继续使用更多文件填充目录。在本地计算机(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());

我已经确认目录都已正确创建。当然,它不是一个权限问题,因为该程序继续使用相同的pDirdDir.createNewFile()创建文件。

这里是否有任何明显的错误,或者为什么它可以与本地计算机上的文件一起使用而不是通过NFS?

由于

1 个答案:

答案 0 :(得分:1)

您的问题是您使用的文件名:

x = new File(outputDirectory + File.separator + "d_*_1");

Windows不接受文件名中的星号“*”。