从来都是翻墙上谷歌官网查文档,但是有时没办法翻墙,就得用sdk本地的doc文档了,由于文档内部的一些javascript,font等也需要访问Google来加载,导致了打开本地网页也巨慢无比,甚至转了半天圈都打不开,后来经过查找,发现可通过360提供的资源来替换Google的,这样打开的就快得多了。话不多说,上代码批量修改:

package test.qin.fileio;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class Main {
<span style="white-space:pre"> </span>ExecutorService executors = Executors.newFixedThreadPool(2); <span style="white-space:pre"> </span>public static void main(String[] args) throws InterruptedException {
<span style="white-space:pre"> </span>Main m = new Main();
<span style="white-space:pre"> </span>File f = new File("F:\\sdk\\docs");
<span style="white-space:pre"> </span>m.googleCDNChange(f);
<span style="white-space:pre"> </span>m.close();
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 将谷歌CDN修改为360CDN
<span style="white-space:pre"> </span> * 
<span style="white-space:pre"> </span> * @param rootFile
<span style="white-space:pre"> </span> *            本地文件根目录,或本地文件
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>public void googleCDNChange(File rootFile) {
<span style="white-space:pre"> </span>if (rootFile != null && rootFile.exists()) {
<span style="white-space:pre"> </span>// 是个文件夹,则修改它包含的文件
<span style="white-space:pre"> </span>if (rootFile.isDirectory()) {
<span style="white-space:pre"> </span>File[] childs = rootFile.listFiles();
<span style="white-space:pre"> </span>for (File f : childs) {
<span style="white-space:pre"> </span>googleCDNChange(f);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>} else {
<span style="white-space:pre"> </span>// 是个文件,则修改自身
<span style="white-space:pre"> </span>ReplaceRunnable r = ReplaceRunnable.CreateNew(rootFile, this);
<span style="white-space:pre"> </span>star(r);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 替换字符串
<span style="white-space:pre"> </span> * 
<span style="white-space:pre"> </span> * @param f
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>public void replaceString(File f) {
<span style="white-space:pre"> </span>try {
<span style="white-space:pre"> </span>String fileName = f.getName();
<span style="white-space:pre"> </span>if (!fileName.endsWith(".html") && !fileName.endsWith(".js")) {
<span style="white-space:pre"> </span>return;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out.println(fileName + "开始修改");
<span style="white-space:pre"> </span>FileReader fileInputStream = new FileReader(f);
<span style="white-space:pre"> </span>BufferedReader bufferedReader = new BufferedReader(fileInputStream);
<span style="white-space:pre"> </span>StringBuffer sb = new StringBuffer();
<span style="white-space:pre"> </span>String tmp = null;
<span style="white-space:pre"> </span>while ((tmp = bufferedReader.readLine()) != null) {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>tmp = tmp.replace("fonts.googleapis.com", "fonts.useso.com");
<span style="white-space:pre"> </span>tmp = tmp.replace("ajax.googleapis.com", "ajax.useso.com");
<span style="white-space:pre"> </span>tmp = tmp.replace("www.google.com/jsapi",
<span style="white-space:pre"> </span>"ajax.useso.com/jsapi");
<span style="white-space:pre"> </span>tmp = tmp.replace("www.google-analytics.com", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("www.google-analytics.com/analytics.js", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("})(window,document,'script','//www.google-analytics.com/analytics.js','ga');", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("ga('create', 'UA-5831155-1', 'android.com');", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("ga('send', 'pageview');", "");
<span style="white-space:pre"> </span>tmp = tmp.replace("ga('universal.send', 'pageview');", "");
<span style="white-space:pre"> </span>sb.append(tmp);
<span style="white-space:pre"> </span>sb.append(System.getProperty("line.separator"));
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>bufferedReader.close();
<span style="white-space:pre"> </span>FileWriter fileWriter = new FileWriter(f);
<span style="white-space:pre"> </span>fileWriter.write(sb.toString().replace("",""));
<span style="white-space:pre"> </span>fileWriter.flush();
<span style="white-space:pre"> </span>fileWriter.close();
<span style="white-space:pre"> </span>System.out.println(fileName + "修改完毕");
<span style="white-space:pre"> </span>} catch (FileNotFoundException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>} catch (IOException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public void star(Runnable r) {
<span style="white-space:pre"> </span>executors.execute(r);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public void close() {
<span style="white-space:pre"> </span>executors.shutdown();
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>static class ReplaceRunnable implements Runnable {
<span style="white-space:pre"> </span>public static ReplaceRunnable CreateNew(File f, Main m) {
<span style="white-space:pre"> </span>ReplaceRunnable r = new ReplaceRunnable();
<span style="white-space:pre"> </span>r.f = f;
<span style="white-space:pre"> </span>r.m = m;
<span style="white-space:pre"> </span>return r;
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private File f;
<span style="white-space:pre"> </span>private Main m; <span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void run() {
<span style="white-space:pre"> </span>m.replaceString(f);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

android doc 本地文档加载慢的解决办法的更多相关文章

  1. vs 修改活动解决方案配置后无法调试,不生成pdb文件,“当前不会命中断点 还没有为该文档加载任何符号” 解决方法

    修改vs的活动解决配置后无法进行调试,比如在Release.Debug之后新增一个TEST,切换到test后就无法进行调试. 修改一下 项目属性->生成->高级 中“调试信息”改为 ful ...

  2. VS2010 release编译下进行调试,“当前不会命中任何断点,还没有为文档加载”问题解决方案

    在release模式下调试程序,经常出现"当前不会命中任何断点,还没有为文档加载"的问题,可尝试以下方法: 1. 属性 → 配置属性 → C/C++ → 常规 → 调试信息格式:选 ...

  3. Javascript绝不要使用在文档加载之后使用 document.write(), 怎么理解?

    在文档加载之后使用 document.write(),会覆盖该文档.   需满足两个条件:      1.在函数内部调用document.write():      2.通过按钮响应调用函数:   举 ...

  4. jQuery文档加载完毕的几种写法

    js中文档加载完毕.一般在body加一个onload事件或者window.onload = function () {} jQuery中有好多写法,平时也不注意,别人一问,还真觉得头大. 下面是我整理 ...

  5. 原生JS与jQuery文档加载完毕的写法

    HTML是有执行顺序的,默认是自上而下执行.所以当我们的js代码在html代码下边的时候,可以正常执行,而当我们的js代码在html代码上边的时候,可以就无法正常执行了,这时,我们需要在文档加载完毕的 ...

  6. js坚持不懈之14:不要在文档加载之后使用 document.write()示例

    在看w3school的JavaScript教程时,关于文档输出流中有这么一句话:绝不要在文档加载之后使用 document.write().这会覆盖该文档. 不太明白什么意思,找了一个例子: < ...

  7. release环境下,当前不会命中断点,还没有为该文档加载任何符号

    今天在release编译环境下出现了如标题所说的问题“ 当前不会命中断点,还没有为该文档加载任何符号”,在网上找了几个方法都没有解决我的问题,咨询了一下师傅,解决了,很简单,方法如下:右键--属性-- ...

  8. 使用js主函数的原因是等文档加载完了才给里面的元素添加东西 如果不使用主函数则文档加载时候无法找到元素则不能成功给元素添加事件

    使用js主函数的原因是等文档加载完了才给里面的元素添加东西 如果不使用主函数则文档加载时候无法找到元素则不能成功给元素添加事件

  9. 遇到Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的情况

    一.问题及原因 有这样一种调用逻辑:A.exe调用B.dll.现在想要在B的源代码中打断点,从A发起进行调试,却给出了"当前不会命中断点.还没有为该文档加载任何符号"的提示.感觉十 ...

随机推荐

  1. [PoC]某B2B网站的一个反射型XSS漏洞

    Author: Charlie 个人微博:http://YinYongYou.com 转载请注明出处. 工作过程纯粹手贱,测试了一下.然后发现了这么一个东西.有心利用能造成大范围影响.如可以自由修改用 ...

  2. .NET的Snk使用方法

    保护你Asp.Net生成的DLL和Code不被别人反编译  大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层.业务层引用数据访问层的DLL(比如 dataAccess.dll),并使用da ...

  3. 多线程和Boost::Asio

    线程安全 一般的,高并发使用不同的对象是安全的,在高并发中使用单一的对象是不安全的,io_service类型提供了单对象高并发的强安全保证. 线程池 多线程可能调用io_service::run()来 ...

  4. [Selenium]中使用css选择器进行元素定位

    参考:http://www.cnblogs.com/webblog/archive/2009/07/07/1518274.html 常见语法 * 通用元素选择器,匹配任何元素 E 标签选择器,匹配所有 ...

  5. php 算法之切割数组,不用array_chunk(),算法之二,取数组的差值,不用array_diff()

    用php写算法切割数组,不用array_chunk();算法例如以下所看到的. <?php //$array 数组 //$size 每一个数组的个数 //每一个数组元素是否默认键值 functi ...

  6. 有图有真相,分享一款网页版HTML5飞机射击游戏

    本飞机射击游戏是使用HTML5代码写的,尝试通过统一开发环境(UDE)将游戏托管在MM应用引擎,直接生成了网页版游戏,游戏简单易上手,非常适合用来当做小休闲打发时间. 游戏地址:http://flyg ...

  7. [AngularJS] Javascript scope and AngularJS $scope

    Scope resolution of our Angular documents works exactly the same way scope resolution works in plain ...

  8. 理解WebKit和Chromium: 调试Android系统上的Chromium

    转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...

  9. iOS开发——面试总结(一)

    面试总结(一) 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIRespon ...

  10. Nhibernate中 Many-To-One 中lazy="proxy" 延迟不起作用的原因

    2010-07-15 12:10 by 彭白洋, 322 阅读, 0 评论, 收藏, 编辑 NHibernate中 Many-To-One 中lazy="proxy" 延迟不起作用 ...