如何创建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);
file file file=new file(parsedPath)代码>只有当您知道总是在文件名的末尾传递文件名时,这才有效
这就是我为解决这个“问题”或滥用图书馆所做的
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答案中的我的评论-不要自己解析路径,已经有了这样的方法。正如我在答案中所说,“如果你打算使用文件。创建目录…否则…”