在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("文件剪切失败,可能是复制或删除过程中出现问题!");
}
}
}
请注意,在执行文件删除操作时需要格外小心,因为一旦源文件被删除,就无法从代码中恢复它(除非有备份)。此外,这些示例代码假设源路径和目标路径都是有效的,并且具有相应的读写权限。在实际应用中,你可能需要添加额外的错误处理和权限检查。