news 2026/8/17 5:53:27

352. Java IO API - Java 文件操作:java.io.File 与 java.nio.file 功能对比 - 4

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
352. Java IO API - Java 文件操作:java.io.File 与 java.nio.file 功能对比 - 4

352. Java IO API - 逐步迁移到java.nio.fileAPI - 4

如果望充分利用java.nio.file包提供的强大功能,可以通过File.toPath()方法将旧代码逐步迁移到新的Path接口。但如果不想使用这种方法,或者需要对文件 I/O 代码进行重写,将不得不重构代码以完全使用新的PathAPI。

Java 文件操作:java.io.Filejava.nio.file功能对比

在 Java 编程里,文件操作是一项常见的任务。Java 提供了两个主要的文件操作 API:java.io.Filejava.nio.file。前者是 Java 早期就有的 API,而后者是 Java 7 引入的新 API,具备更强大的功能和更好的性能。接下来,我们会对这两个 API 的功能进行对比,同时给出示例代码辅助理解。

16. 目录内容列出
  • java.io.File:使用File.list()File.listFiles()方法来列出目录的内容。
  • java.nio.file.Files:使用Files.newDirectoryStream()方法来列出目录的内容。

示例代码

importjava.io.File;importjava.io.IOException;importjava.nio.file.DirectoryStream;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;publicclassDirectoryListingExample{publicstaticvoidmain(String[]args)throwsIOException{// 使用 java.io.FileFiledirectory=newFile(".");String[]files=directory.list();for(Stringfile:files){System.out.println("java.io.File - File: "+file);}// 使用 java.nio.file.FilesPathpath=Paths.get(".");DirectoryStream<Path>stream=Files.newDirectoryStream(path);for(Pathp:stream){System.out.println("java.nio.file.Files - File: "+p);}stream.close();}}
17. 目录创建
  • java.io.File:使用File.mkdir()File.mkdirs()方法来创建目录。
  • java.nio.file.Files:使用Files.createDirectory(Path,FileAttribute)方法来创建目录。

示例代码

importjava.io.File;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.nio.file.attribute.FileAttribute;importjava.nio.file.attribute.PosixFilePermissions;importjava.util.Set;publicclassDirectoryCreationExample{publicstaticvoidmain(String[]args)throwsIOException{// 使用 java.io.FileFiledirectory=newFile("new_directory");booleancreated=directory.mkdir();System.out.println("java.io.File - Directory created: "+created);// 使用 java.nio.file.FilesPathpath=Paths.get("new_directory_2");Set<java.nio.file.attribute.PosixFilePermission>perms=PosixFilePermissions.fromString("rwxr--r--");FileAttribute<Set<java.nio.file.attribute.PosixFilePermission>>attr=PosixFilePermissions.asFileAttribute(perms);Files.createDirectory(path,attr);System.out.println("java.nio.file.Files - Directory created");}}
18. 文件系统根目录列出
  • java.io.File:使用File.listRoots()方法来列出文件系统的根目录。
  • java.nio.file.FileSystem:使用FileSystem.getRootDirectories()方法来列出文件系统的根目录。

示例代码

importjava.io.File;importjava.nio.file.FileSystems;importjava.nio.file.Path;importjava.util.Iterator;publicclassRootDirectoriesExample{publicstaticvoidmain(String[]args){// 使用 java.io.FileFile[]roots=File.listRoots();for(Fileroot:roots){System.out.println("java.io.File - Root: "+root);}// 使用 java.nio.file.FileSystemIterable<Path>rootDirectories=FileSystems.getDefault().getRootDirectories();Iterator<Path>iterator=rootDirectories.iterator();while(iterator.hasNext()){System.out.println("java.nio.file.FileSystem - Root: "+iterator.next());}}}
19. 文件存储属性获取
  • java.io.File:使用File.getTotalSpace()File.getFreeSpace()File.getUsableSpace()方法来获取文件存储的总空间、空闲空间和可用空间。
  • java.nio.file.FileStore:使用FileStore.getTotalSpace()FileStore.getUnallocatedSpace()FileStore.getUsableSpace()方法来获取文件存储的总空间、未分配空间和可用空间。

示例代码

importjava.io.File;importjava.io.IOException;importjava.nio.file.FileStore;importjava.nio.file.FileSystems;importjava.nio.file.Path;publicclassFileStoreAttributesExample{publicstaticvoidmain(String[]args)throwsIOException{// 使用 java.io.FileFilefile=newFile(".");System.out.println("java.io.File - Total Space: "+file.getTotalSpace());System.out.println("java.io.File - Free Space: "+file.getFreeSpace());System.out.println("java.io.File - Usable Space: "+file.getUsableSpace());// 使用 java.nio.file.FileStorePathpath=FileSystems.getDefault().getPath(".");FileStorestore=java.nio.file.Files.getFileStore(path);System.out.println("java.nio.file.FileStore - Total Space: "+store.getTotalSpace());System.out.println("java.nio.file.FileStore - Unallocated Space: "+store.getUnallocatedSpace());System.out.println("java.nio.file.FileStore - Usable Space: "+store.getUsableSpace());}}

总结

java.nio.file包是 Java 7 引入的新文件操作 API,相较于java.io.File具有更强大的功能和更好的性能。在实际开发中,建议优先使用java.nio.file包进行文件操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 5:51:01

Qwen3系统数据库设计:使用MySQL存储任务与字幕数据

Qwen3系统数据库设计&#xff1a;使用MySQL存储任务与字幕数据 今天咱们来聊聊怎么给一个智能字幕对齐系统——比如叫它Qwen3吧——设计一个靠谱的后端数据库。你可能已经用上了各种AI模型来处理视频和字幕&#xff0c;但生成的结果、处理的任务状态&#xff0c;这些数据总得有…

作者头像 李华
网站建设 2026/8/17 5:51:40

Qwen1.5-1.8B GPTQ应用开发:基于Agent的自动化任务编排系统

Qwen1.5-1.8B GPTQ应用开发&#xff1a;基于Agent的自动化任务编排系统 1. 引言 你有没有遇到过这种情况&#xff1a;想完成一个稍微复杂点的任务&#xff0c;比如“查一下北京的天气&#xff0c;然后根据天气推荐一下周末出游的穿搭”&#xff0c;结果得自己手动打开天气应用…

作者头像 李华
网站建设 2026/8/17 5:49:22

清音刻墨·Qwen3实战:为YouTube/Bilibili视频生成SEO优化字幕文案

清音刻墨Qwen3实战&#xff1a;为YouTube/Bilibili视频生成SEO优化字幕文案 1. 引言&#xff1a;当字幕不再只是“翻译” 你有没有遇到过这种情况&#xff1f;辛辛苦苦做了一期视频&#xff0c;上传到平台后&#xff0c;播放量却一直上不去。你检查了标题、封面、内容&#x…

作者头像 李华
网站建设 2026/7/14 16:12:05

解决403 Forbidden错误:Qwen3-ASR-0.6B WebUI访问权限配置指南

解决403 Forbidden错误&#xff1a;Qwen3-ASR-0.6B WebUI访问权限配置指南 部署好Qwen3-ASR-0.6B的WebUI&#xff0c;满心欢喜地打开浏览器&#xff0c;结果迎面而来的不是酷炫的界面&#xff0c;而是一行冰冷的“403 Forbidden”。这种感觉&#xff0c;就像你拿着钥匙却打不开…

作者头像 李华
网站建设 2026/7/14 16:12:03

便携式多协议串口调试终端设计与实现

1. 项目概述便携串口调试助手是一款面向嵌入式现场调试场景的多功能硬件终端&#xff0c;其核心设计目标是脱离PC主机独立运行&#xff0c;在无计算机连接条件下完成多协议串行接口间的双向数据桥接、实时显示、格式转换与交互式发送。该设备并非传统意义上的“USB转串口适配器…

作者头像 李华
网站建设 2026/7/14 16:12:18

手把手教你用LangChain调用Qwen3-0.6B:小白也能快速搭建AI聊天机器人

手把手教你用LangChain调用Qwen3-0.6B&#xff1a;小白也能快速搭建AI聊天机器人 1. 认识Qwen3-0.6B&#xff1a;轻量级AI助手 Qwen3-0.6B是阿里巴巴通义千问系列中最轻量级的语言模型&#xff0c;虽然体积小但功能强大。它特别适合想要快速体验AI聊天机器人开发的初学者&…

作者头像 李华