BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #19515同步于 2011/7/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

Java怎么把缓冲区的字符串输入文件?

APTX486900
2011/7/25镜像同步7 回复
RT,函数值返回,怎样让本来返回到缓冲区的字符串返回到文件呢?查了好多,没有找到答案,请指教啊!! 难道先“return s.append(s+"\r\n"); ”,再 BufferedReader cReader = new BufferedReader(new InputStreamReader(in,charset));
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
APTX486900机器人#1 · 2011/7/25
up~
fykhlp机器人#2 · 2011/7/26
在return之前写入文件不行吗
APTX486900机器人#3 · 2011/7/26
【 在 fykhlp 的大作中提到: 】 : 在return之前写入文件不行吗 : -- how?thx~
wks机器人#4 · 2011/7/26
新手问下, “缓冲区”是什么呀? “返回”是什么? “函数的返回值”我记得书上说是返回到栈上呀,怎么返回到缓冲区里呢? 急。在线等。
wolf521机器人#5 · 2011/7/26
【 在 APTX486900 的大作中提到: 】 : RT,函数值返回,怎样让本来返回到缓冲区的字符串返回到文件呢?查了好多,没有找到答案,请指教啊!! : 难道先“return s.append(s+"\r\n"); ”,再 : BufferedReader cReader = new BufferedReader(new InputStreamReader(in,charset)); : ................... 直接说需求吧,你要做什么,或者说要达到什么样的效果 实在说不清可以直接贴代码
wolf521机器人#6 · 2011/7/27
下面是lz给我发的站内信,我觉得还是直接在这回复比较好,就全部贴过来了 -------------------一下是lz发的------------------------------------ 想从抓到的网页的源代码中提出中文关键词…… 现在抓到了,但是用正则表达式提取之前需要去除标记\b\t\f\n\r吧?由于我是抓取时用了管道,所以写入的是缓冲区……所以想把它存入一个文件先,再去除标记,再匹配提取: import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; public class trial005 { public static void main(String[] args) { try { URL url = new URL("http://service.weibo.com/pub/top/alltopic?date=2011-07-19"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); InputStream in = null; in = url.openStream(); StringBuffer content = pipe(in,"utf-8"); System.out.println(content); } catch (Exception e) { e.printStackTrace(); } } static StringBuffer pipe(InputStream in,String charset) throws IOException { StringBuffer s = new StringBuffer(); if(charset==null||"".equals(charset)) { charset="utf-8"; } String rLine = null; BufferedReader bReader = new BufferedReader(new InputStreamReader(in,charset)); PrintWriter pw = null; FileOutputStream fo = new FileOutputStream("../index.html"); OutputStreamWriter writer = new OutputStreamWriter(fo, "utf-8"); pw = new PrintWriter(writer); while ( (rLine = bReader.readLine()) != null) { String tmp_rLine = rLine; int str_len = tmp_rLine.length(); if (str_len > 0) { s.append(tmp_rLine); pw.println(tmp_rLine); pw.flush(); } tmp_rLine = null; } in.close(); pw.close(); return s.append(s+"\r\n"); } /* String str = (">[\u4e00-\u9fa5]+<").matcher("<http://www.xinlang.weibo/>中文</a></div>"; Matcher m = Pattern.compile(str); */ /* 去script */ public static String trimScript(String content) { String regEx = "<!DOCTYPE html PUBLIC href=http://weibo.com/k/西班牙&Refer=Pubhot_top>西班牙</a> <div class=trend>1999<em class=upicon></em> "; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(content); String result = content; if (m.find()) { result = m.replaceAll(""); } return result; } /* 去除注释 */ public static String trimComment(String content) { String regEx = "<!--[^-]*-->"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(content); String result = content; if (m.find()) { result = m.replaceAll(""); } return result; } /* 去除标签 */ public static String trimTag(String content) { String regEx = "<[^>]+>"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(content); String result = content; if (m.find()) { result = m.replaceAll(""); } result = result.replace(" ", "").replace(">", "").replace(">", ""); return result; } public static void main1(String[] args) { String str = ">中<"; Matcher m = Pattern.compile(">[\u4e00-\u9fa5]+<").matcher(str); while(m.find()) { System.out.println(m.group()); } }}
wolf521机器人#7 · 2011/7/27
其实lz在pipe()方法里不是已经在写文件了吗 s.append(s+"\r\n"); 是想在最后加个空行?直接在pw.close(); 之前pw.println();就可以了。 而且就算要返回一个最后有空行的StringBuffer也应该是 s.append("\r\n");