文档章节

[共享]RFC中文文档

canghailan
 canghailan
发布于 2012/08/09 16:00
字数 391
阅读 342
收藏 3
RFC

今天在搜索TCP/IP协议的资料时,无意中找到一些RFC文档的翻译。写了个程序抓取下来以便随时查看。

package canghailan.downloader;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RFCDownload {
	private static final String DOWNLOAD_DIR = "D:\\rfc_cn";
	private static final String[] URLS = {
			"http://www.cnpaf.net/Class/RFC/200411/1047.html",
			"http://www.cnpaf.net/Class/RFC/200411/1048.html",
			"http://www.cnpaf.net/Class/RFC/200411/1049.html",
			"http://www.cnpaf.net/Class/RFC/200411/1050.html",
			"http://www.cnpaf.net/Class/RFC/200411/1051.html",
			"http://www.cnpaf.net/Class/RFC/200411/1052.html",
			"http://www.cnpaf.net/Class/RFC/200411/1053.html",
			"http://www.cnpaf.net/Class/RFC/200411/1054.html" };
	private static final String DEFAULT_CHARSET = "gbk";
	private static final Pattern A_PATTERN = Pattern
			.compile("<[Aa][^>]+href=['\"]?([^\\s'\"]*)['\"]?[^>]*>([^<]*)</\\s*[Aa]\\s*>");

	public static String loadURL(String url) throws IOException {
		Reader reader = null;
		try {
			URLConnection conn = new URL(url).openConnection();
			conn.connect();

			int length = conn.getContentLength();
			String charset = conn.getContentEncoding();

			reader = new BufferedReader(new InputStreamReader(
					conn.getInputStream(), charset == null ? DEFAULT_CHARSET
							: charset));

			StringBuilder buffer = new StringBuilder(length);
			for (;;) {
				int ch = reader.read();
				if (ch == -1) {
					break;
				}
				buffer.append((char) ch);
			}
			return buffer.toString();
		} finally {
			if (reader != null) {
				reader.close();
			}
		}
	}

	public static void saveFile(String file, String content) throws IOException {
		Writer writer = null;
		try {
			writer = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(file), "utf-8"));
			writer.write(content);
			writer.flush();
		} finally {
			if (writer != null) {
				writer.close();
			}
		}
	}

	public static void loadAndSave(String url, String text) throws IOException {
		saveFile(getFile(text), loadURL(url));
	}

	public static String getFile(String text) {
		return DOWNLOAD_DIR + File.separator
				+ text.replace("RFC", "rfc").replace("/", "-") + ".txt";
	}

	public static void main(String[] args) throws IOException {
		for (String pageURL : URLS) {
			String page = loadURL(pageURL);
			Matcher matcher = A_PATTERN.matcher(page);
			while (matcher.find()) {
				String url = matcher.group(1);
				String text = matcher.group(2);
				if (url.contains("/rfc/")) {
					System.out.println(url + "(" + text + ")");
					loadAndSave(url, text);
				}
			}
		}
	}
}

package canghailan.downloader;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class RFCRename {
	private static final String DIR = "D:\\rfc_cn";
	private static final Pattern BAD_FILE = Pattern.compile("rfc\\d+_.*");

	public static void main(String[] args) {
		File dir = new File(DIR);
		for (String badFile : dir.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				return BAD_FILE.matcher(name).matches();
			}
		})) {
			String name = badFile.replaceFirst("_", " ");
			new File(dir, badFile).renameTo(new File(dir, name));
		}
	}
}

 

 

 

 

© 著作权归作者所有

canghailan

canghailan

粉丝 28
博文 14
码字总数 10765
作品 0
武汉
程序员
私信 提问
IPv6 中文RFC 汇总

http://down.51cto.com/zt/826 Request For Comments,缩写为 RFC,由互联网工程任务组(IETF)发布的一系列标准,规定了当今互联网、局域网等所有标准。专题收集了IPv6相关技术文档,帮助大家...

zmx009
2017/01/24
0
0
推荐一个博客

weicq2000的RFC标准翻译 转载▼ 本人利用部分时间翻译RFC标准,挂在“百度文库”和“CSDN”网站上,可通过“百度”、“谷歌”搜索引擎,输入RFC5569(中文)、或RFC4443(中文)、或RFC4861(中文...

zmx009
2012/07/14
0
0
探究 Content-Disposition:解决下载中文文件名乱码

今天解决了一个设置下载文件名为中文的问题:直接在Content-Disposition中设置中文会导致乱码。按照网上的办法(Content-Disposition + UTF-8)就搞定了。不过为了能搞清楚问题的关键所在,我...

彬彬公子
04/18
0
0
Nginx中文域名配置

Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转。 why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域...

袁梓皓
2016/03/09
21
0
Fanta/free-programming-books-zh_CN

免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版...

Fanta
2016/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue-Ueditor

记录,忘了还要写啥了,先发吧,后面再补。。。 代码示例 import UEditor from '@/components/UE.vue';components: { UEditor },return {config: { //可以在此处定义工...

华山猛男
昨天
2
0
jupyter部署安装

python373 -m ipykernel install --name python373 ipython kernelspec list sc create myjupyterservice binpath="D:\apply\Python373\Scripts\jupyter-notebook --config=V:/my_work/jupyt......

mbzhong
昨天
4
0
聊聊feign的Contract

序 本文主要研究一下feign的Contract Contract feign-core-10.2.3-sources.jar!/feign/Contract.java public interface Contract { /** * Called to parse the methods in the class t......

go4it
昨天
3
0
Linux 软链接和硬链接简介

本文主要介绍了Linux系统中的链接文件。 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据。 元数据(inode) 元数据即文件的索引节点(inode),用来记录文件的权限(r、w、x...

问题终结者
昨天
5
0
RocketMQ的事务投递

RocketMQ的事务投递 这是阿里的分布式事务图: 1、A服务先发送个Half Message给Brock端,消息中携带 B服务 即将要+100元的信息。 2、当A服务知道Half Message发送成功后,那么开始第3步执行本...

春哥大魔王的博客
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部