Android4.2刚发布不久,更新了一下4.2的SDK,顺便更新了一下Documentation for Android SDK,真后悔更新这个文档。害得在Ubuntu10.10下用火狐打开页面错乱,而且打开奇慢无比,一直是一个白板,等接近10几秒才慢慢出来页面,而且其他子页面也都是奇慢无比!
我就很郁闷的,好好的文档,一下子就这么慢了,那今后要看文档就麻烦了,太耗时了。那个后悔呀。
(补充:事后发现可以直接下载,虽然在sdk manager里面没有。doc 3.0的下载地址为:http://dl-ssl.google.com/android/repository/docs-3.0_r01-linux.zip(直接迅雷下载就行),这个版本不会出现打开慢的问题, 不过内容没有4.2版丰富)
后来想了想,不能这么慢,都下载好的本地html,于是看了看页面的源代码。明白了!
很明显,在打开本地文档前需要打开google的网站,google.com在中国打开慢,这不是我们需要争辩的话题。
那么,如何才能解决?答案很明显,要么断网,要么去掉这些网址。
本人觉得吧,闲每次看个文档断网太麻烦了。于是决定自己花些时间写个小工具,去除文档中的网址。
先看看写完的小工具吧。
下载地址:http://download.csdn.net/detail/xn4545945/4809848
由于处理的文件量比较大,有1W多个html文件。共计500M多一点,耗时比较长。构想对每一个文件开一个线程来进行处理,那就是考验CPU与内存的时候了。
部分主要代码:
package xu.neng.processor;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 调用一个独立的线程来处理单个html文件删除过程
*/
public class ProcessorThread extends Thread
{
// 传递过来的路径
private File file;
private String htmlContent = "http://blog.csdn.net/xn4545945";
public ProcessorThread()
{
super();
}
public ProcessorThread(File file)
{
super();
this.file = file;
}
@Override
public void run()
{
try
{
String oldString1 = "http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold";
String oldString2 = "http://www.google.com/jsapi";
// 1. 从文件读取出字符串存放进htmlContent
BufferedReader in = new BufferedReader(new FileReader(file));
//这里按行来读并比对,设定字节数组应该会快一些.稍后再改.
String temp = "";
while ((temp = in.readLine()) != null)
{
// 2. 从字符串中删除特定的内容, 并存入字符htmlContent中
if (temp.contains(oldString1))
{
htmlContent = htmlContent + temp.replace(oldString1, "")
+ "\n";
} else if (temp.contains(oldString2))
{
htmlContent = htmlContent + temp.replace(oldString2, "")
+ "\n";
} else if (htmlContent.equals("http://blog.csdn.net/xn4545945"))
{
htmlContent += "\n";
} else
{
htmlContent = htmlContent + temp + "\n";
}
}
// System.out.println(htmlContent);// 打印一下
in.close();
// 3. 将字符串写入文件
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(htmlContent);
out.close();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
super.run();
}
}
未完待续。。。。。。。以后再写,里面包含了一些多线程问题。
转载请注明出处:http://blog.csdn.net/xn4545945