1 NIO.2
JDK7 发布后,Java 对 NIO进行了极大的扩充,增强了对文件处理和文件系统特性的支持。我们称之为 NIO.2。因为 NIO 提供的一些功能,NIO已经成为文件处理中越来越重要的部分
1.1 Path 与 Paths
java.nio.file.Path
接口代表一个平台无关的平台路径,描述了目录结构中文件的位置- Paths 提供的
get()
方法用来获取 Path 对象
public static void test() {
Path path = Paths.get("D:", "Download","BaiduNetdisk");
File file = new File(path.toString());
String[] list = file.list();
for (int i = 0;i<list.length;i++) {
System.out.println(list[i]);
}
}
方法名 | 方法描述 |
---|
boolean endsWith(String path) | 判断是否以path 路径结束 |
boolean startsWith(String path) | 判断是否以path 路径开始 |
boolean isAbsolute() | 判断是否是绝对路径 |
Path getFileName() | 返回与调用Path 对象关联的文件名 |
Path getName(int idx) | 返回的指定索引位置idx 的路径名称 |
int getNameCount() | 返回Path 根目录后面元素的数量 |
Path getParent() | 返回Path对象包含整个路径,不包含Path 对象指定的文件路径 |
Path getRoot() | 返回调用Path 对象的根路径 |
Path resolve(Path p) | 将相对路径解析为绝对路径 |
Path toAbsolutePath() | 作为绝对路径返回调用Path 对象 |
String toString() | 返回调用Path 对象的字符串表示形式 |
1.2 File 类
方法名 | 方法描述 |
---|
Path copy(Path src, Path dest, CopyOption … how) | 文件的复制 |
Path createDirectory(Path path, FileAttribute<?> … attr) | 创建一个目录 |
Path createFile(Path path, FileAttribute<?> … arr) | 创建一个文件 |
void delete(Path path) | 删除一个文件 |
Path move(Path src, Path dest, CopyOption…how) | 将src 移动到dest 位置 |
long size(Path path) | 返回path 指定文件的大小 |
方法名 | 方法描述 |
---|
boolean exists(Path path, LinkOption … opts) | 判断文件是否存在 |
boolean isDirectory(Path path, LinkOption … opts) | 判断是否是目录 |
boolean isExecutable(Path path) | 判断是否是可执行文件 |
boolean isHidden(Path path) | 判断是否是隐藏文件 |
boolean isReadable(Path path) | 判断文件是否可读 |
boolean isWritable(Path path) | 判断文件是否可写 |
boolean notExists(Path path, LinkOption … opts) | 判断文件是否不存在 |
public static <A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption… options) | 获取与path 指定的文件相关联的属性 |
方法名 | 方法描述 |
---|
SeekableByteChannel newByteChannel(Path path, OpenOption…how) | 获取与指定文件的连接,how 指定打开方式 |
DirectoryStream newDirectoryStream(Path path) | 打开path 指定的目录 |
InputStream newInputStream(Path path, OpenOption…how) | 获取InputStream 对象 |
OutputStream newOutputStream(Path path, OpenOption…how) | 获取OutputStream 对象 |
2 自动资源管理
Java 7 提供了另外一种管理资源的方式,这种方式能自动关闭文件。这个特性被称为自动资源管理(Automatic Resource Management,ARM)。该特性以 try 语句的扩展版为基础。自动资源管理主要用于,当不再需要文件(或其他资源)时,可以防止无意中忘记释放他们。
try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(newFile));) {
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line+System.lineSeparator());
}
} catch (Exception e) {
e.printStackTrace();
}
注:
① Try 语句中声明的资源被隐式声明为 final,资源的作用局限于带资源的 try 语句
② 可以在一条 try 语句中管理多个资源,每个资源以“;”分割即可
③ 需要关闭的资源,必须实现 AutoCloseable 接口或其子接口 Closeable