Java用File完成硬盘文件的增删查改操作

我的项目环境是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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值