删除同文件夹下相同的文件(HashSet和file)
来源:互联网 发布:linux源码编译mysql 编辑:程序博客网 时间:2024/06/14 22:54
package com.homework.homework01;/** * 需求: * 1.指定一个路径,删除其下面(含子文件夹中)的同名,同大小,同修改时间 * 的重复文件,只保留一个(利用集合HashSet<MyFile>). * */import java.io.File;import java.util.HashSet;/* * 思路: * 1.获取目录当中所有的文件,遍历,把文件的信息进行识别,如果在集合中存储了文件就删除这个文件。 * 如果没有存储就加入到集合当中,下一次遇到时就删除。 * */public class Homework01 {static HashSet<MyFile>set = new HashSet<>();public static void main(String[] args) {File file = new File("c:\\pro");deleteFile(file);}/** * 步骤: * 1.获取文件夹当中所有的文件。 * 2.判断获取到的对象是文件还是文件夹。 * 如果是问价,创建一个myFile对象用来存储当前文件的信息,判断容器中是否还包含了这个文件。 * 如果是文件夹,就还要执行这个判断遍历的过程。 * */public static void deleteFile(File file){File[] files = file.listFiles();if(files!=null){for(File file2 : files){if(file2.isFile()){MyFile myfile = new MyFile(file2.getName(), file2.length(), file2.lastModified());if(set.contains(myfile)){file2.delete();}else{set.add(myfile);System.out.println(myfile);}}else{deleteFile(file2);}}}}}class MyFile{private String name;private long length;private long modifiedTime;//修改时间public String getName() {return name;}public void setName(String name) {this.name = name;}public long getLength() {return length;}public void setLength(long length) {this.length = length;}public long getModifiedTime() {return modifiedTime;}public void setModifiedTime(long modifiedTime) {this.modifiedTime = modifiedTime;}public MyFile() {super();// TODO Auto-generated constructor stub}public MyFile(String name, long length, long modifiedTime) {super();this.name = name;this.length = length;this.modifiedTime = modifiedTime;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + (int) (length ^ (length >>> 32));result = prime * result + (int) (modifiedTime ^ (modifiedTime >>> 32));result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;MyFile other = (MyFile) obj;if (length != other.length)return false;if (modifiedTime != other.modifiedTime)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}@Overridepublic String toString() {return "MyFile [name=" + name + ", length=" + length + ", modifiedTime=" + modifiedTime + "]";}}
1 0
- 删除同文件夹下相同的文件(HashSet和file)
- java删除文件夹下相同后缀文件和删除文件夹
- Ubuntu下删除两个文件夹下相同文件名且相同内容的文件(分色排版)
- 将不同文件夹下相同文件名的文件移动到一个文件夹下
- java遍历删除windows下的指定文件夹下面的相同格式或指定格式的file文件
- Ubuntu 删除两个文件夹下相同文件名的文件
- python删除文件夹下相同文件和无法打开的图片
- Ubuntu下删除两个文件夹下相同文件名且相同内容的文件V1.1(分色排版)
- 比较同一文件夹下相同大小的文件。删除相同的文件,备份到制定文件夹下
- Ubuntu 删除两个文件夹下相同文件名的文件(内容也完全相同)
- File,把指定的目录下的所有文件和文件夹删除的方法
- java遍历删除指定文件夹下面的相同格式或指定格式的file文件
- java file删除目录下的文件及文件夹
- Java删除文件夹下所有的文件和文件夹
- 删除文件夹下的所有文件和子文件夹
- Windows下删除无法删除的文件和文件夹-Unlocker
- 删除文件夹下的文件(转)
- 删除文件夹下的文件(FileUtils)
- PHP Session锁及并发机制 | void session_write_close(void)函数
- Codevs 2776 寻找代表元(二分图匹配)
- Java多线程下模拟文件下载
- hdu 5213
- ebCTF bin200 Writeup
- 删除同文件夹下相同的文件(HashSet和file)
- [DP] HDU5819 Knights
- 设计模式总结之Interpreter Pattern(解释器模式)
- 设计模式-行为型-访问者模式(Visitor)
- Eclipse 4.6 Neon 的Tomcat插件安装方法
- POJ - 2488 A Knight's Journey
- python的一个对比
- zzuliOJ 1908:小火山的围棋梦想(DFS+小思维)
- UVALive 7327 Digit Division