一、解决遍历问题
可以使用File类中的 listFile() 方法生成 File[]集合,然后通过循环对每个对象进行操作;
二、判断文件类型
可以使用File类中的 isDirectory() 和 isFile() 方法分别判断是目录还是文件,此步骤可以通过遍历实现。
三、显示最后修改时间
可以使用 File 类的 lastModified() 方法来显示,但这个方法返回的 long 类型,要用 Instant 类进行转换。
LocalDateTime dateTime = Instant.ofEpochMilli(files[i].lastModified()).
atZone(ZoneId.systemDefault()).toLocalDateTime();
如果要更美观一些,可以使用格式化进行处理
String strPattern = "yyyy-MM-dd HH:mm:ss"; //时间格式的规则
//格式化时间,这里的dateTime就是上面转换的
String date = dateTime.format(formatter);
四、显示文件大小
可以使用 File 类的 length() 方法来显示,但返回的是B单位,所以也要转换一下。
int size = (int) Math.ceil(files[i].length() / 1024.0) + "KB"
这里使用的是Math的向上取整 ceil() 方法,再转换为int类型,这就跟文件资源管理器一样了。
五、子目录和普通文件的个数
这个就直接判断是子目录还是普通文件,循环的时候顺便一起计数了;
六、解决输入问题
用户总是会输入一些奇奇怪怪的东西,这时候我们就要排除
1.可以使用 file.isDirectory() 来判断是不是一个目录,若不是再给予提示;
2.要消除头尾和中间的无效空格,可以使用 trim() 和 replace(" ","") 方法
3.用户可能要查询 根目录d:\ 和 d:当前目录,d:直接送入file 类使用,虽然不会报错,但是会出现小bug,彷佛file的方法失灵了。所以此时我们还要把输入的路径再处理成绝对路径:
file = file.getAbsoluteFile(); //获取输入的绝对路径,避免当前目录或根目录获取错误
附张图吧:
至于这个窗口,用FXML做的。