Android SDK的docs访问速度很慢

网上看到很多人咨询这样的问题,于是笔者就打算编写一段代码去解决这样的问题。看来本人比较幸运的解决个这个问题。以下是源码,分享给大家。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;

public class AndroidDoc {

	private static final String ANDROID_SDK_HOME = "ANDROID_SDK_HOME";
	private static final String TAG = "<script src=\"http://www.google.com/jsapi\" type=\"text/javascript\"></script>";
	private static String androidSDKHome;

	public static void main(String[] args) {
		Map<String, String> map = System.getenv();
		androidSDKHome = map.get(ANDROID_SDK_HOME);
		if (androidSDKHome != null) {
			System.out.println("Detected the Android SDK Installation path:"
					+ androidSDKHome);
			File docs = new File(androidSDKHome + "\\docs");
			System.out.println("It will take several minutes, please wait...");
			traverse(docs);
			System.out
					.println("Operation Down!!! Now you can visit Android Doc without waiting...");
		} else {
			System.out
					.println("Please configure the Android SDK Environment variable (ANDROID_SDK_HOME)!");
		}
	}

	/**
	 * 遍历Android SDK安装目录下的docs目录
	 * 
	 * @param dir
	 */
	private static void traverse(File dir) {
		if (dir.isDirectory()) {
			File[] files = dir.listFiles(new FileFilter() {

				@Override
				public boolean accept(File file) {
					if (file.isFile() && file.getName().endsWith(".html")) {
						BufferedReader reader = null;
						try {
							reader = new BufferedReader(new FileReader(file));
							String buffer;
							while ((buffer = reader.readLine()) != null) {
								if (buffer.trim().equalsIgnoreCase(TAG)) {
									return true;
								}
							}
						} catch (Exception e) {
							e.printStackTrace();
						} finally {
							try {
								reader.close();
							} catch (IOException e) {
								e.printStackTrace();
							}
						}
					} else if (file.isDirectory()) {
						return true;
					}
					return false;
				}
			});
			for (File file : files) {
				if (file.isDirectory()) {
					System.out.println("Scanning Folder:"
							+ file.getAbsolutePath());
					traverse(file);
				} else {
					doChange(file);
				}
			}
		}
	}

	/**
	 * 注释html中的某行Javascript代码
	 * 
	 * @param file
	 * @return
	 */
	private static boolean doChange(File file) {
		System.out.println("Extracting File:" + file.getAbsolutePath() + "...");
		String desPath = file.getParent() + "\\" + UUID.randomUUID().toString() + ".html";
		File des = new File(desPath);
		BufferedReader reader = null;
		BufferedWriter writer = null;
		try {
			des.createNewFile();
			reader = new BufferedReader(new FileReader(file));
			writer = new BufferedWriter(new FileWriter(des));
			String buffer;
			while ((buffer = reader.readLine()) != null) {
				if (buffer.trim().equalsIgnoreCase(TAG)) {
					buffer = "<!--" + TAG + "-->";
				}
				writer.write(buffer + "\n");
				writer.flush();
			}
			return true;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				reader.close();
				writer.close();
				file.delete();
				des.renameTo(file);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return false;
	}

}
这个是简单的java类,编译运行即可。因为Android SDK的docs中包含很多html文件,所以运行的时间可能较长,请大家耐心等待,运行完之后再次访问docs将变得很快。笔者以测试过,非常好用!忘了告诉大家了,这是Windows版本的,Linux版本后续推出。谢谢各位!

你可能感兴趣的:(android,android,文档,sdk,docs)