!!!惊喜在下面!!!
1、Update Hosts
import java.awt.Desktop; 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; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; /** * 更新Hosts文件 * * @author MrChu * @version 1.0 * @date 2015年1月16日 * @see www.chuweibiao.com */ public class UpdateHosts { /** HTML页面路径 */ private static final String PAGE_URL = "http://www.360kb.com/kb/2_122.html"; /** Hosts文件路径 */ private static final String HOSTS_PATH = "C:\\Windows\\System32\\drivers\\etc\\hosts"; /** Hosts备份文件路径 */ private static final String HOSTS_BAK_PATH = "C:\\Windows\\System32\\drivers\\etc\\hosts.bak"; /** * 根据页面URL获取HTML内容 * @param pageUrl * 页面URL * @return * HTML内容 */ public static String getHtmlContent(String pageUrl) { StringBuffer sb = new StringBuffer(); BufferedReader in = null; try { URL url = new URL(pageUrl); in = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8")); String temp; while ((temp = in.readLine()) != null) { sb.append(temp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } int begin = sb.indexOf("#google hosts 2015 by 360kb.com"); int end = sb.indexOf("#google hosts 2015 end") + 22; return sb.substring(begin, end).toString(); } /** * 转换HTML内容 * @param pageUrl * 页面URL * @return * 转换后的HTML内容 */ public static String convertHtmlContent(String pageUrl) { String content = getHtmlContent(pageUrl); content = content.replaceAll("(<br />)+?", "\r\n"); content = content.replaceAll(" ", " "); content = content.replaceAll(" ", ""); content = content.replaceAll(" ", " "); content = content.replaceAll("</span></p><p> <span><span style=\"line-height:22px;\"><span>", "\r\n"); content = content.replaceAll("<span> </span>", " "); content = content.replaceAll("</span> ", ""); content = content.replaceAll("</span>", ""); return content; } /** * 读取Hosts文件 * @param filePath * Hosts文件路径 * @return * Hosts文件内容 */ public static String readHosts(String filePath) { FileReader fileReader = null; BufferedReader bufferedReader = null; StringBuilder sb = new StringBuilder(); try { fileReader = new FileReader(filePath); bufferedReader = new BufferedReader(fileReader); String line = null; while ((line = bufferedReader.readLine()) != null) { sb.append(line).append("\r\n"); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fileReader.close(); bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } /** * 更新Hosts文件 * @param filePath * Hosts文件路径 * @param content * Hosts文件内容 */ public static void updateHosts(String filePath, String content) { FileWriter fileWriter = null; BufferedWriter bufferedWriter = null; try { File file = new File(filePath); if (!file.exists()) { file.createNewFile(); } fileWriter = new FileWriter(filePath); bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(content); } catch (IOException e) { e.printStackTrace(); } finally { try { fileWriter.flush(); bufferedWriter.flush(); fileWriter.close(); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { // Hosts文件备份 String hostsContent = ""; File file = new File(HOSTS_BAK_PATH); if (file.exists()) { hostsContent = readHosts(HOSTS_BAK_PATH); } else { hostsContent = readHosts(HOSTS_PATH); updateHosts(HOSTS_BAK_PATH , hostsContent); } // Hosts文件更新 String newHostsContent = hostsContent + "\r\n" + convertHtmlContent(PAGE_URL); updateHosts(HOSTS_PATH, newHostsContent); System.out.println("\r\n▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽"); System.out.println("\r\n ▇▆▄▃▂▁Hosts文件更新成功!▁▂▃▄▆▇\r\n"); System.out.println("△△△△△△△△△△△△△△△△△△△△△△△△"); // 浏览器访问测试可行性 try { URI uri = new URI("http://www.google.com/"); Desktop.getDesktop().browse(uri); } catch (URISyntaxException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2、Restore Hosts
import java.io.File; /** * 还原Hosts文件 * * @author MrChu * @version 1.0 * @date 2015年1月16日 * @see www.chuweibiao.com */ public class RestoreHosts { /** Hosts文件路径 */ private static final String HOSTS_PATH = "C:\\Windows\\System32\\drivers\\etc\\hosts"; /** Hosts备份文件路径 */ private static final String HOSTS_BAK_PATH = "C:\\Windows\\System32\\drivers\\etc\\hosts.bak"; /** * 还原Hosts文件 * @return * true:还原成功,false:还原失败 */ public static boolean restoreHosts() { File file = new File(HOSTS_BAK_PATH); if (!file.exists()) { return false; } else { UpdateHosts.updateHosts(HOSTS_PATH, UpdateHosts.readHosts(HOSTS_BAK_PATH)); return file.delete(); } } public static void main(String[] args) { if (restoreHosts()) { System.out.println("\r\n▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽"); System.out.println("\r\n ▇▆▄▃▂▁Hosts文件还原成功!▁▂▃▄▆▇\r\n"); System.out.println("△△△△△△△△△△△△△△△△△△△△△△△△"); } else { System.out.println("\r\n▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽"); System.out.println("\r\n ▇▆▄▃▂▁还原失败,Hosts备份文件不存在!▁▂▃▄▆▇\r\n"); System.out.println("△△△△△△△△△△△△△△△△△△△△△△△△△△△△△△"); } } }
Crossing The Great Wall(史上最简单无公害翻墙之术......):
http://download.csdn.net/detail/for_china2012/8368737
时间: 2024-12-18 02:03:17