Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 - Fatal编程技术网

Java 文件字符串生成目录而不是文件名

Java 文件字符串生成目录而不是文件名,java,Java,当我用Java创建文件时,它会创建一个文件夹,例如文件名+文件类型“extension” String path = "C:"+File.separator+"hello"+File.separator+"hi.txt"; File f = new File(path); f.mkdirs(); f.createNewFile(); 本例创建了一个名为“hi.txt”的文件夹或目录,而不是我所期望的文件。为什么这不是一个文件?正如您所说的f.mkdirs()第一个,它创建了具有给定路径的目录

当我用Java创建文件时,它会创建一个文件夹,例如文件名+文件类型“extension”

String path = "C:"+File.separator+"hello"+File.separator+"hi.txt";
File f = new File(path);
f.mkdirs(); 
f.createNewFile();

本例创建了一个名为“hi.txt”的文件夹或目录,而不是我所期望的文件。为什么这不是一个文件?

正如您所说的
f.mkdirs()第一个,它创建了具有给定路径的目录。首先使用
f.getParentFile().mkdirs()
创建父目录,然后使用
f.createNewFile()
创建文件:


您首先指示VM创建目录
f
,然后创建文件
f
。您想创建
f
父目录,而不是
f
目录:

File parent = f.getParentFile();
boolean ret = parent.mkdirs();

您现在应该检查
ret
,以了解是否有任何错误。

您希望创建由
C:\hello\hi.txt
的父路径表示的目录,即
C:\hello
,然后创建文件本身

如果您使用的是Java 7,实现这一点的最清晰的方法是使用和,如下所示:

Path path = Paths.get("C:", "hello", "hi.txt");
Files.createDirectories(path.getParent());
Files.createFile(path);

f.getParentFile().mkdirs()。问题是什么?如何区分何时创建文件和何时创建文件夹(参考
mkdirs
)?文档说:
创建了这个抽象路径名命名的目录
。我想创建类型为“txt”而不是folderladdin的文件,用你的魔灯回答:)开玩笑。您首先使用mkdirs创建整个路径,包括hi.txt作为文件夹,您首先需要使用mkdir而不使用hi.txt,然后创建新文件
Path path = Paths.get("C:", "hello", "hi.txt");
Files.createDirectories(path.getParent());
Files.createFile(path);