java中的类|!
2014-01-24 22:12
176 查看
使用File的lastModify方法是不行的,又不想使用md5码来校验,不使用md5来判断是因为md5算法运算大文件时耗时间。况且内容不改变,只改变文件名。
后来使用lastModify+文件的绝对路径来作为依据判断,我做了2个Map来映射,新map和旧map不匹配则会产生新增和删除这2个结果。
这样用来判断文件还是可以的 但是文件夹就不行了。如果文件夹下面还有文件(夹),也会被误认为重命名。
有什么其他解决办法吗?或者代码应该如何修改更加好?
代码如下:
public class Main {
public Map map = new HashMap();
public String baseFilePath;
public static void main(String[] args) throws IOException, InterruptedException {
String baseFilePath = "D:\\md5";
Main m = new Main(baseFilePath);
Map oldMap = m.getFileInfo(baseFilePath);
//很长时间过去了
//-------------------各种操作:文件(夹)或修改或删除或新增----------------
File oldFile = new File(baseFilePath+"\\ddd.txt");//删除
oldFile.delete();
File newFile = new File(baseFilePath+"\\new.txt");//新增
newFile.createNewFile();
File olddir = new File(baseFilePath+"\\test");//重命名
File newdir = new File(baseFilePath+"\\test2");
olddir.renameTo(newdir);
//-------------------操作结束---------------------------------------
Main m2 = new Main(baseFilePath);
Map newMap = m2.getFileInfo(baseFilePath);
Map resultMap = m.getModifyInfo(oldMap, newMap);
List resultKeys = new ArrayList(resultMap.keySet());
for(String resultKey:resultKeys){
String resultValue = resultMap.get(resultKey);
System.out.println(resultKey+"---"+resultValue);
}
}
public Main(String baseFilePath){
this.baseFilePath = baseFilePath;
}
/**
* 循环得到目录下的名字和modify时间
* @param baseFile 根目录
* @return Map 相对baseFilePath的路径 以及 最后修改时间
*/
public Map getFileInfo(String baseFile){
FileOperate fo = new FileOperate();
File[] files = fo.getFileList(baseFile);
for(File file:files){
map.put(file.getAbsolutePath()。substring(baseFilePath.length()), file.lastModified());//相对baseFilePath的路径 以及 最后修改时间
if(file.isDirectory()){
getFileInfo(file.getAbsolutePath());//递归
}
}
return map;
}
/**
后来使用lastModify+文件的绝对路径来作为依据判断,我做了2个Map来映射,新map和旧map不匹配则会产生新增和删除这2个结果。
这样用来判断文件还是可以的 但是文件夹就不行了。如果文件夹下面还有文件(夹),也会被误认为重命名。
有什么其他解决办法吗?或者代码应该如何修改更加好?
代码如下:
public class Main {
public Map map = new HashMap();
public String baseFilePath;
public static void main(String[] args) throws IOException, InterruptedException {
String baseFilePath = "D:\\md5";
Main m = new Main(baseFilePath);
Map oldMap = m.getFileInfo(baseFilePath);
//很长时间过去了
//-------------------各种操作:文件(夹)或修改或删除或新增----------------
File oldFile = new File(baseFilePath+"\\ddd.txt");//删除
oldFile.delete();
File newFile = new File(baseFilePath+"\\new.txt");//新增
newFile.createNewFile();
File olddir = new File(baseFilePath+"\\test");//重命名
File newdir = new File(baseFilePath+"\\test2");
olddir.renameTo(newdir);
//-------------------操作结束---------------------------------------
Main m2 = new Main(baseFilePath);
Map newMap = m2.getFileInfo(baseFilePath);
Map resultMap = m.getModifyInfo(oldMap, newMap);
List resultKeys = new ArrayList(resultMap.keySet());
for(String resultKey:resultKeys){
String resultValue = resultMap.get(resultKey);
System.out.println(resultKey+"---"+resultValue);
}
}
public Main(String baseFilePath){
this.baseFilePath = baseFilePath;
}
/**
* 循环得到目录下的名字和modify时间
* @param baseFile 根目录
* @return Map 相对baseFilePath的路径 以及 最后修改时间
*/
public Map getFileInfo(String baseFile){
FileOperate fo = new FileOperate();
File[] files = fo.getFileList(baseFile);
for(File file:files){
map.put(file.getAbsolutePath()。substring(baseFilePath.length()), file.lastModified());//相对baseFilePath的路径 以及 最后修改时间
if(file.isDirectory()){
getFileInfo(file.getAbsolutePath());//递归
}
}
return map;
}
/**
相关文章推荐
- Java获取Html变量的值
- Java Web Framework有望减少混战,Java Web Alignment Group成立
- java中的基本数据类型
- 对JXL包的研究(java操作excel)
- 搜索引擎开发,垂直搜索开发探讨:蜘蛛,并行,搜索,垂直搜索,搜索开发,lucene,java,分布[原创]
- (二)Java游戏部署在Linux平台仿真器上(Motorola)
- 产生 java.lang.NoClassDefFoundError 的另一种意外情况:jar包部分的物理性损坏
- Java 通配符匹配查找文件
- Java学习笔记(三、面向对象编程基础)
- 一个不错的java学习网站
- 某某的 java 心得
- JAVA开发者应该去的20个英文网站
- Java系统时间 格式
- 读文件(java)
- 一个体现Java接口及工厂模式优点的例子
- java调用命令行示例补充
- 做Java用到的所有开发工具
- js 传中文,java后台乱码问题
- ubuntu安装java开发环境
- Java内存分配原理 (2)