您的位置:首页 > 其它

一件令人蛋疼的事

2016-04-09 23:08 531 查看
最近的时候, 因为完善了一下HXCrawler, 主要是其中的Log.java, Tools.java, 因此我想将HelloWorld项目中的所有使用”com.hx.util.Log”, “com.hx.util.Tools”替换为HXCrawler中的相关的类[crawler.util.Log, crawler.util.Tools]

so 写了如下脚本

/**
* file name : Test16UpdateReference.java
* created at : 20:02:43 PM Apr 9, 2016
* created by 970655147
*/

package com.hx.test11;

public class Test16UpdateReference {

// 卧槽 上一个这个脚本, 把我整惨了,, oh my所有的注释, 艹
public static void main(String[] args) throws Exception {

File file = new File("C:\\Users\\970655147\\Desktop\\tmp");
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getName().equals("Test01CrawlForBaiduBar" + Tools.JAVA);
}
};
Map<String, String> oldToNew = new HashMap<>();
oldToNew.put("import com.hx.util.Log;", "import com.hx.crawler.util.Log;");
oldToNew.put("import com.hx.util.Tools;", "import com.hx.crawler.util.Tools;");

updateReference(file, filter, oldToNew);

// ----------- 乱码问题 ---------------
//      String srcCharSet = "gbk";
//      String dstCharSet = "utf-8";
////        String str = "锟斤拷";
//      String str = "刁刁叼";
//
//      Charset srcCS = Charset.forName(srcCharSet), dstCS = Charset.forName(dstCharSet);
//      Log.log(dstCS.decode(srcCS.encode(str)) );

}

// 更新符合条件的文件的import引用
private static void updateReference(File file, FileFilter filter, Map<String, String> oldToNew) throws Exception {
if(file.isFile() ) {
List<String> lines = Tools.getContentWithList(file);
StringBuilder sb = new StringBuilder(lines.size() * lines.get(0).length() );
for(String line : lines) {
if(oldToNew.containsKey(line.trim()) ) {
Tools.appendCRLF(sb, oldToNew.get(line) );
continue ;
}
Tools.appendCRLF(sb, line);
}
Tools.save(sb.toString(), file);
} else {
for(File childFile : file.listFiles(filter) ) {
updateReference(childFile, filter, oldToNew);
}
}

}

}


然后 首先, 复制了两个文件到临时文件夹, 然后处理, 看了一下 处理没有什么问题,,,

然后 我将path配置为我的HelloWorld的项目路径, 然后 run

特么的, 就是这一run, 就导致了 我后面的三个小时的悲剧, 并且还会持续下去…

这一run啊,, 妈的 虽然起了作用, 也就是将”com.hx.util.Log” 替换为了”com.hx.crawler.Log”, 以及Tools, 但是 导致了一个更加严重的问题,,

部分”com.hx.util.Tools”的方法, 在”crawler.util.Tools”中没有, 所以 只能将部分包名重新改回去[这是运行之后三个小时悲剧的时间开销]

还有一个更可怕的地方在于, 产生了中文乱码,, so 意味着我的所有的宝贵的注释都没了,, 以及一些回忆[处理问题的过程中的体会].. 这个就是会持续下去的悲剧了,,

之后的时候, 只能够在回顾的时候, 重新添加注释了,, 以及部分打印的日志的内容,,[其中比较可惜的是, 相关算法, 数据结构[BTree, VEBTree, 字符串匹配等等]的内容, 以及一些工具]

附上现状 :



其实开了十几个文件的时候, eclipse已经卡的不行了, 留到五十多个主要是为了, 记录一下这悲伤的记忆…

真是 踩了狗屎,, 为什么在tmp目录执行就没有乱码, 而在HelloWorld项目中却产生了乱码呢[项目文件是GBK编码, 而我的Tools中的默认字符集为UTF-8, 所以造成了经典的”锟斤拷”乱码问题, 然后以UTF-8持久化..[萌生了悲剧] ]

在写这种不可逆的文件操作的时候, 请记得一定要备份啊~!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: