Java 文件字符串生成目录而不是文件名
当我用Java创建文件时,它会创建一个文件夹,例如文件名+文件类型“extension”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()第一个,它创建了具有给定路径的目录
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);