当前位置:首页 > Java

java如何同磁盘交互

2026-03-18 13:23:35Java

Java 与磁盘交互的方法

Java 提供了多种方式与磁盘进行交互,包括文件读写、目录操作、文件系统监控等。以下是常见的实现方法:

文件读写操作

使用 java.iojava.nio 包中的类进行文件读写:

java如何同磁盘交互

import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.BufferedReader;

// 写入文件
File file = new File("example.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
    writer.write("Hello, World!");
}

// 读取文件
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

使用 NIO(New I/O)包

java.nio.file 提供了更现代的文件操作方式:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

Path path = Paths.get("example.txt");

// 写入文件
Files.write(path, "Hello, NIO!".getBytes());

// 读取文件
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);

目录操作

创建、删除和遍历目录:

java如何同磁盘交互

import java.io.File;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;

// 创建目录
File dir = new File("mydir");
dir.mkdir();

// 遍历目录
Path dirPath = Paths.get("mydir");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dirPath)) {
    for (Path entry : stream) {
        System.out.println(entry.getFileName());
    }
}

文件属性操作

获取和修改文件属性:

import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;

Path filePath = Paths.get("example.txt");
BasicFileAttributes attrs = Files.readAttributes(filePath, BasicFileAttributes.class);

System.out.println("Creation time: " + attrs.creationTime());
System.out.println("Size: " + attrs.size());

// 修改文件时间
Files.setLastModifiedTime(filePath, FileTime.fromMillis(System.currentTimeMillis()));

文件系统监控

使用 WatchService 监控文件系统变化:

import java.nio.file.*;

Path dir = Paths.get("mydir");
WatchService watchService = FileSystems.getDefault().newWatchService();
dir.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE);

WatchKey key;
while ((key = watchService.take()) != null) {
    for (WatchEvent<?> event : key.pollEvents()) {
        System.out.println("Event kind: " + event.kind() + ". File affected: " + event.context());
    }
    key.reset();
}

注意事项

  • 使用 try-with-resources 语句确保资源正确关闭。
  • 处理 IOException 以应对可能的文件操作错误。
  • 对于大文件,使用缓冲流或 NIO 以提高性能。
  • 考虑文件路径的跨平台兼容性,使用 Paths.get()File.separator

标签: 磁盘java
分享给朋友:

相关文章

java如何编程

java如何编程

Java编程基础 Java是一种面向对象的编程语言,广泛应用于企业级开发、移动应用(Android)等领域。以下是Java编程的核心步骤和示例。 环境搭建 安装JDK 从Oracle官网下载适合…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…