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

谢谢

最佳答案

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

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


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

关于java - Java createNewFile无法在本地网络上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48558294/

10-10 04:35