第六课 NIO.2 & 自动资源管理

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值