搜索

pdf文档 Java 基础之IO 和NIO 补完

218.38 KB 9 页 3 下载 327 浏览 0 评论 0 收藏
所属分类: 后端开发 / Java
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档主要介绍了Java NIO中的Path接口及其使用方法,包括创建路径实例、处理绝对路径和相对路径、路径的规范化操作,以及Files类提供的文件操作方法,如文件存在性检查、目录创建、文件复制、移动和删除等。此外,还涉及了Java NIO中的AsynchronousFileChannel用于异步文件读写操作。
AI总结
本文主要介绍了Java IO和NIO的相关知识,重点讲解了Java NIO中的Path接口、Files类以及AsynchronousFileChannel的使用。以下是核心内容总结: ### 1. Path接口 - **定义**:`java.nio.file.Path`接口用于表示文件系统中的路径,可以是绝对路径或相对路径。 - **创建实例**: - 使用`Paths.get()`方法创建,支持绝对路径和相对路径。 - 示例: ```java Path path = Paths.get("c:\\data\\myfile.txt"); Path absolutePath = Paths.get("data/to-delete"); // 绝对路径 Path relativePath = Paths.get("d:\\data", "projects"); // 相对路径 ``` - **路径处理**: - 使用`normalize()`方法简化路径,去除多余的“.`”和“..”。 - 示例: ```java Path path1 = Paths.get("d:\\data\\projects\\a-project\\..\\another-project"); Path path2 = path1.normalize(); // 结果:d:\data\projects\another-project ``` ### 2. Files类 - **文件存在性检查**: ```java Path path = Paths.get("data/logging.properties"); boolean exists = Files.exists(path, new LinkOption[]{LinkOption.NOFOLLOW_LINKS}); ``` - **创建目录**: ```java Path path = Paths.get("data/subdir"); try { Path newDir = Files.createDirectory(path); } catch (FileAlreadyExistsException e) { // 目录已存在 } ``` - **文件操作**: - **复制文件**: ```java Path source = Paths.get("data/logging.properties"); Path dest = Paths.get("data/logging-copy.properties"); Files.copy(source, dest); ``` - **覆盖文件**: ```java Files.copy(source, dest, StandardCopyOption.REPLACE_EXISTING); ``` - **移动文件**: ```java Path source = Paths.get("data/logging-copy.properties"); Path dest = Paths.get("data/subdir/logging-moved.properties"); Files.move(source, dest, StandardCopyOption.REPLACE_EXISTING); ``` - **删除文件**: ```java Path path = Paths.get("data/subdir/logging-moved.properties"); Files.delete(path); ``` - **遍历文件目录**: - 使用`Files.walkFileTree()`递归遍历文件目录,配合`FileVisitor`实现文件操作。 - 示例: ```java Path rootPath = Paths.get("data"); Files.walkFileTree(rootPath, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { System.out.println("访问文件:" + file); return FileVisitResult.CONTINUE; } }); ``` ### 3. AsynchronousFileChannel - **异步文件操作**: - **读取数据**: ```java Path path = Paths.get("data/test.xml"); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); ByteBuffer buffer = ByteBuffer.allocate(1024); Future operation = fileChannel.read(buffer, 0); // 等待读取完成 while (!operation.isDone()); buffer.flip(); byte[] data = new byte[buffer.limit()]; buffer.get(data); System.out.println(new String(data)); buffer.clear(); ``` - **写入数据**: ```java Path path = Paths.get("data/test-write.txt"); if (!Files.exists(path)) { Files.createFile(path); } AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE); ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.put("test data".getBytes()); buffer.flip(); Future operation = fileChannel.write(buffer, 0); ``` ### 总结 本文详细介绍了Java NIO中Path接口的使用方法,Files类对文件和目录的操作,以及AsynchronousFileChannel的异步文件读写功能。通过这些内容,可以更好地理解和使用Java NIO来处理文件和IO操作。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 2 页请下载阅读 -
文档评分
请文明评论,理性发言.