Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建Java中不存在的路径和文件_Java_Nio - Fatal编程技术网

如何创建Java中不存在的路径和文件

如何创建Java中不存在的路径和文件,java,nio,Java,Nio,这就是我遇到的问题:如果部分或全部路径不存在,服务器应该根据需要在层次结构中创建其他目录,然后如上所述创建一个新文件 Files.createDirectories(path); 这是我目前正在使用的,但它不会创建结束文件。例如,path=“/hello/test.html”将创建一个名为“hello”的目录和一个名为“test.html”的目录,我希望test.html是一个文件。我该怎么做呢?你看过地图了吗创建目录仅创建。。。目录。如果您打算使用Files.createDirectorie

这就是我遇到的问题:如果部分或全部路径不存在,服务器应该根据需要在层次结构中创建其他目录,然后如上所述创建一个新文件

Files.createDirectories(path);
这是我目前正在使用的,但它不会创建结束文件。例如,path=“/hello/test.html”将创建一个名为“hello”的目录和一个名为“test.html”的目录,我希望test.html是一个文件。我该怎么做呢?

你看过地图了吗<代码>创建目录仅创建。。。目录。如果您打算使用
Files.createDirectories
,请解析文件名,调用
createDirectories
仅传递路径部分,然后创建一个传递整个路径的新文件。否则是更好的办法

Files.createDirectories(path.substring(0, path.lastIndexOf(File.separator)+1));
File yourFile = new File(path);
  • 您可以使用分隔符“/”解析'path'变量以隔离文件和目录,并执行
    file file file=new file(parsedPath)只有当您知道总是在文件名的末尾传递文件名时,这才有效

  • 如果您知道何时a)创建目录b)创建目录和文件,则可以传递布尔变量,该变量将描述是否需要创建文件


  • 这就是我为解决这个“问题”或滥用图书馆所做的

    Files.createDirectories(path.getParent());
    Files.createFile(path);
    
    第一行将获得父目录,因此假设这是我想要创建的“/a/b/c/hello.txt”,父目录将是“/a/b/c/”


    第二个like将在该目录中创建文件。

    发布您正在使用的实际代码,以便我们为您指出正确的方向。请参见此处:是的,请参见@Matt所指的内容,但我发现Java在我尝试过的每个系统上都使用正斜杠
    /
    分隔符-Unix、Mac、Windows、,即使路径看起来像
    volName:[topdir.subdir.otherdir]filename.txt
    的虚拟机,我也意识到CreateDirectory只创建目录而不是文件…最好使用
    File.separator
    而不是硬编码“/”。没错,我的意图是让用户至少从这个方法开始,然后可以更好地增强它。您不必首先解析,您只需执行
    file=newfile(somepath)
    ,因为file表示一个路径和一个可能(但不一定)存在的文件。然后使用
    file.getCanonicalPath()
    仅获取其中的路径部分,其中所有内容(如“foo/。/bar”)都已解析。然后调用CreateDirectory。@helloworld如果是这样的话,为什么还要提到分隔符呢?只要承认你的错误,而不是将其合理化。请参阅@helloworld答案中的我的评论-不要自己解析路径,已经有了这样的方法。正如我在答案中所说,“如果你打算使用文件。创建目录…否则…”