我目前正在研究一种创建文件和目录的方法。贝娄是用例&问题解释了。
1)当用户指定路径,例如" / parent / sub folder / file.txt"时,系统应该能够与file.txt一起创建目录。 (这个有效)
2)当用户指定路径,例如" / parent / sub-folder /"或者" / parent / sub-folder",系统应该能够创建所有目录。 (不起作用),而不是创建" /子文件夹/"或/子文件夹"作为文件夹,它将创建一个名为"子文件夹"。
的文件这是我的代码
Path path = Paths.get(rootDir+"test/hello/");
try {
Files.createDirectories(path.getParent());
if (!Files.isDirectory(path)) {
Files.createFile(path);
} else {
Files.createDirectory(path);
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
答案 0 :(得分:2)
您需要使用createDirectories(Path)
代替createDirectory(path)
。正如tutorial:
在一个或多个目录中创建几个级别的目录 父目录可能尚不存在,您可以使用方便 方法,createDirectories(Path,FileAttribute)。和。一样 createDirectory(Path,FileAttribute)方法,可以指定一个 可选的初始文件属性集。以下代码段 使用默认属性:
Files.createDirectories(Paths.get( “富/酒吧/测试”));
目录 根据需要,从上到下创建。在foo / bar / test中 例如,如果foo目录不存在,则创建它。接下来, 如果需要,创建bar目录,最后创建测试目录 已创建。
创建一些方法后,此方法可能会失败,但不会 所有的父目录。
答案 1 :(得分:0)
不确定您使用的是哪个File API。但是在下面找到使用java.io包创建文件和文件夹的最简单代码。
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) {
FileTest fileTest = new FileTest();
fileTest.createFile("C:"+File.separator+"folder"+File.separator+"file.txt");
}
public void createFile(String rootDir) {
String filePath = rootDir;
try {
if(rootDir.contains(File.separator)){
filePath = rootDir.substring(0, rootDir.lastIndexOf(File.separator));
}
File file = new File(filePath);
if(!file.exists()) {
System.out.println(file.mkdirs());
file = new File(rootDir);
System.out.println(file.createNewFile());
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}