我的项目环境是eclipse
如果用的是idea的话最好创建好一个同类名的.class文件。因为字符编码不同 ,我用的是GBK。如果报错或者出现中文注释不出现的话,最好搜一下idea怎么改字符编码。
package com.bili.demo3;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Demo3 {
/**
* 2、控制台版文件管理器 程序运行后显示所有的磁盘,如下所示: 1.c盘 2.e盘 3.e盘 4.f盘 请选择:
* 如果用户输入了1,回车后,则显示c盘下所有的目录和文件: 1.c:/a.txt(文件) 2.c:/programe file(目录)
* 3.返回上一层 请选择: 如果此时用户选择的是文件,例如输入1,回车,则显示文件的相关操作 1.查看文件信息 2.重命名文件 3.删除文件
* 4.移动文件 如果用户选择的是目录,则继续显示选择目录下的所有文件和目录,以此类推。
*
* @author admit
*
*/
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
menu(null);
}
/**
* 主菜单
*/
private static void menu(File file) {
File[] files = null;
// 判断该 文件 目录 是否为空 为空则显示文件系统根
if (file == null) {
// listRoots 列出可用的文件系统根。
files = File.listRoots();
} else {
// listFiles 获取某个文件夹下所有的文件(夹)
files = file.listFiles();
}
/**
* 显该盘下的目录和文件
*/
for (int i = 0; i < files.length; i++) {
File file2 = files[i];
// listFile 判断是否是文件 getPath 获取文件或文件夹路径
System.out.println((i + 1) + "." + file2.getPath() + " (" + (file2.isFile() ? "文件" : "目录") + ")");
}
/**
* 选择操作
*/
System.out.println("0.返回上一级");
while (true) {
try {
System.out.println("请选择:");
int i = sc.nextInt();
if (i == 0) {
if(file == null) {
menu(null);
}else {
//getParentFile 返回此抽象路径名的父null抽象路径名,如果此路径名未命名为父目录,则返回null。
menu(file.getParentFile());
}
} else {
//显示父级目录 路劲
File file2 = files[i - 1];
//判断是文件还是目录
if (file2.isFile()) {
// 如果选择的是文件
setOperate(file2);
} else {
menu(files[i - 1]);
}
}
} catch (Exception e) {
System.out.println("输入错误,请重新输入:");
sc = new Scanner(System.in);
}
}
}
/**
* 文件操作 1.查看文件信息 2.重命名文件 3.删除文件 4.移动文件
* 功能详情
*/
private static void operate(){
System.out.println("正在进入文件操作功能,请稍后》》》》");
System.out.println("进入成功");
System.out.println("您可以操作以下功能");
System.out.println("1.查看文件信息:");
System.out.println("2.重命名文件:");
System.out.println("3.删除文件:");
System.out.println("4.移动文件:");
System.out.println("5.返回:");
}
private static void setOperate(File file) {
//提示语句方法
operate();
System.out.println("请选择你的操作:");
String i = sc.next();
switch(i){
case "1":
System.out.println("*****查看文件信息*****");
File files = file;
System.out.println("文件名:"+files.getName());
System.out.println("文件路径:"+files.getParent());
System.out.println("文件大小:"+files.length()+"字节");
//获取时间
Date date = new Date(files.lastModified());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss");
System.out.println("文件修改时间:" + format.format(date));
setOperate(files);
break;
case "2":
System.out.println("*****重命名文件*****");
System.out.println("当前文件名:"+file.getName());
System.out.println("请输入要修改的文件名:");
String fileName = sc.next();
File file2 = new File(file.getParent()+"/"+fileName);
file.renameTo(file2);
setOperate(file2);
break;
case "3":
System.out.println("*****删除文件*****");
//判断该文件是否已经存在
File file3 = file.getParentFile();
if(file3.exists()) {
file.delete();
System.out.println("文件删除成功");
}else {
System.out.println("该文件不存在");
}
setOperate(file3);
break;
case "4":
System.out.println("*****移动文件*****");
System.out.println("当前文件名:"+file.getName());
System.out.println("请输入要移动到哪个目录:");
String dir = sc.next();
File file4 = new File(dir);
if(!file4.exists()) {
System.out.println("指定的目录不存在,请确认后载操作!");
}else {
file.renameTo(new File(file4.getParent()+"/"+file.getName()));
System.out.println("移动成功");
}
setOperate(file.getParentFile());
break;
case "5":
System.out.println("正在退出,请稍后》》》》》");
System.out.println("已成功退出");
return;
//setOperate(file.getParentFile());
default:
System.out.println("抱歉,文件次功能还未开通,请重新输入");
break;
}
}
}
效果图:idea运行效果图
效果图:eclipse