请问jdk7新增的Files类中createDirectories 和 createDirectory

黄贤达 发布于 2018/12/01 17:17
阅读 49
收藏 0
JDK

请问jdk7新增的Files类中createDirectories 和 createDirectory这两个方法在创建文件夹时有什么区别

加载中
0
蓝水晶飞机
蓝水晶飞机

当然有区别咯。

一个是后面带s复数,一个没有带。

功能区别是:s代表会创建所需的全部文件夹,比如/a/b/c,如果b不存在则创建b,然后又创建c,返回true。

但如果是不带s的,只会创建一个文件夹,如果遇到上面的b不存在的情况,则无法创建文件夹,返回false。

0
tcxu
tcxu

static Path    createDirectories(Path dir, FileAttribute<?>... attrs)
Creates a directory by creating all nonexistent parent directories first.
继 dir 所示路径,创建给定的(若原先不存在的话)文件夹极其子文件夹构成的路径。(翻译大意)

static Path    createDirectory(Path dir, FileAttribute<?>... attrs)
Creates a new directory.
继 dir 所示路径,创建一个给定的文件夹。(翻译大意)

案例:
代码文档所在位置(路径) D:\java\test\OS_China, 即所谓的 "user.dir"
所要创建的文件夹,原来不存在。
编译运行后,createDirectory 和 createDirectories 分别生成指定的文件夹,和 "指定的文件夹,子文件夹" 的路径。

import java.nio.file.*;
import java.io.*;

public class Test {
	public static void main(String[] args) throws IOException  {
		Path p=Paths.get(System.getProperty("user.dir")+"\\开源中国");
		Path p1=Paths.get(System.getProperty("user.dir")+"\\OSCHINA\\问答\\代码\\讨论");
		System.out.println(Files.createDirectory(p)); 
		System.out.println(Files.createDirectories(p1));
	}
}

输出:

D:\java\test\OS_China\开源中国
D:\java\test\OS_China\OSCHINA\问答\代码\讨论

若指定的文件夹原来就有,则发出异常: java.nio.file.FileAlreadyExistsException。见运行第二次的输出:

Exception in thread "main" java.nio.file.FileAlreadyExistsException: D:\java\test\OS_China\开源中国
        at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:81)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
        at sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:504)
        at java.nio.file.Files.createDirectory(Files.java:674)
        at Test.main(Test.java:8)

 

黄贤达
谢谢!
返回顶部
顶部