从来都是翻墙上谷歌官网查文档,但是有时没办法翻墙,就得用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. Model First:创建实体数据模型(ADO.NET 实体数据模型)

    Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...

  2. VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法

    在VS2015中练习DataGridView的使用, 发现其中的DataGridViewComBoboxCell列存在着绑定数据库列后出现值无效的提示 根据网上的解决办法,添加了DataError后可 ...

  3. 配置 Spring 的声明式事务

    <!-- 1. 配置事务管理器 --> <bean id="transactionManager" class="org.springframework ...

  4. Mysql中关于 group_concat函数详解

    group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...

  5. 【转】WPF颜色相关操作

        using System.Windows.Media; 1.String转换成Color Color color = (Color)ColorConverter.ConvertFromStri ...

  6. Codeforces Round #114 (Div. 1) A. Wizards and Trolleybuses 物理题

    A. Wizards and Trolleybuses Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/conte ...

  7. androidstudio can't run git.exe

    今天用android studio从git下载项目的时候遇到一个问题,提示说can't run git.exe 问了下度娘以及谷歌.但是无果,后面捣鼓了一阵,下了一个git windows版本后,在a ...

  8. Delphi 多文件拖放获取路径示例

    unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

  9. java的集合类【转】

    在JDK API中专门设计了一组类,这组类的功能就是实现各种各样方式的数据存储,这样一组专门用来存储其它对象的类,一般被称为对象容器类,简称容器类,这组类和接口的设计结构也被统称为集合框架(Colle ...

  10. ConfigurationManager.GetSection()方法的使用

    GetSection方法读取的是configSections节点,这个节点在web.config配置文件中,它比较特殊,必须放置于首节点,也就是说,在它之前不能有其它类型的节点.configSecti ...