使用jdk7的nio2操作文件拷贝和剪切示例


在Java 7(JDK 7)中,引入了NIO.2(也称为NIO的扩展或Java 7的文件系统API),它提供了更为强大和灵活的文件IO操作。然而,需要注意的是,NIO.2并没有直接提供“剪切”文件的API,因为“剪切”操作在文件系统中通常是通过“复制”和“删除”两步来实现的。

下面我将分别给出使用NIO.2进行文件拷贝和模拟文件剪切的示例代码。

### 文件拷贝示例


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class FileCopyExample {
    public static void main(String[] args) {
        String sourcePath = "/path/to/source/file.txt";
        String targetPath = "/path/to/target/file.txt";

        try {
            // 使用Files类的copy方法,其中StandardCopyOption.REPLACE表示如果目标文件已存在,则替换它
            Files.copy(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
            System.out.println("文件拷贝成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件拷贝失败!");
        }
    }
}

### 模拟文件剪切示例

模拟文件剪切实际上是先复制文件到目标位置,然后删除源文件。


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class FileCutExample {
    public static void main(String[] args) {
        String sourcePath = "/path/to/source/file.txt";
        String targetPath = "/path/to/target/file.txt";

        try {
            // 先复制文件
            Files.copy(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
            
            // 然后删除源文件
            Files.delete(Paths.get(sourcePath));
            
            System.out.println("文件剪切成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件剪切失败,可能是复制或删除过程中出现问题!");
        }
    }
}

请注意,在执行文件删除操作时需要格外小心,因为一旦源文件被删除,就无法从代码中恢复它(除非有备份)。此外,这些示例代码假设源路径和目标路径都是有效的,并且具有相应的读写权限。在实际应用中,你可能需要添加额外的错误处理和权限检查。