创建文件&目录不能正常工作

时间:2014-04-23 17:31:08

标签: java file path

我目前正在研究一种创建文件和目录的方法。贝娄是用例&问题解释了。

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());
    }

2 个答案:

答案 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());
        }
    }

}