综合演练 使用Java编写一个HDFS管理器 编写菜单 实现上传,下载,删除等需求 运行程序
时间: 2024-03-01 20:53:28 浏览: 58
好的,下面是一个简单的 Java HDFS 管理器,可以实现上传、下载、删除等功能。其中上传和下载使用了 Hadoop 提供的 HDFS API,删除则使用了 Java 的 File 类。请注意,为了使用 Hadoop API,你需要在项目中添加 Hadoop 的依赖库。
```
import java.io.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.util.Scanner;
public class HDFSManager {
private static final String HDFS_URI = "hdfs://localhost:9000"; // HDFS 地址
private static final Configuration conf = new Configuration();
private static FileSystem fs;
public static void main(String[] args) throws Exception {
fs = FileSystem.get(conf);
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 上传文件");
System.out.println("2. 下载文件");
System.out.println("3. 删除文件");
System.out.println("4. 退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
uploadFile();
break;
case 2:
downloadFile();
break;
case 3:
deleteFile();
break;
case 4:
scanner.close();
System.exit(0);
default:
System.out.println("无效操作!");
}
}
}
// 上传文件
private static void uploadFile() throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入本地文件路径:");
String localPath = scanner.nextLine();
System.out.println("请输入目标路径:");
String hdfsPath = scanner.nextLine();
Path srcPath = new Path(localPath);
Path dstPath = new Path(HDFS_URI + hdfsPath);
fs.copyFromLocalFile(srcPath, dstPath);
System.out.println("上传成功!");
}
// 下载文件
private static void downloadFile() throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入目标文件路径:");
String hdfsPath = scanner.nextLine();
System.out.println("请输入本地保存路径:");
String localPath = scanner.nextLine();
Path srcPath = new Path(HDFS_URI + hdfsPath);
Path dstPath = new Path(localPath);
fs.copyToLocalFile(srcPath, dstPath);
System.out.println("下载成功!");
}
// 删除文件
private static void deleteFile() throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的文件路径:");
String hdfsPath = scanner.nextLine();
Path path = new Path(HDFS_URI + hdfsPath);
fs.delete(path, true);
System.out.println("删除成功!");
}
}
```
你可以根据需要修改上述代码,以便符合你的具体需求。
阅读全文