返回信息流RT,函数值返回,怎样让本来返回到缓冲区的字符串返回到文件呢?查了好多,没有找到答案,请指教啊!!
难道先“return s.append(s+"\r\n"); ”,再
BufferedReader cReader = new BufferedReader(new InputStreamReader(in,charset));
这是一条镜像帖。来源:北邮人论坛 / java / #19515同步于 2011/7/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Java怎么把缓冲区的字符串输入文件?
APTX486900
2011/7/25镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 APTX486900 的大作中提到: 】
: RT,函数值返回,怎样让本来返回到缓冲区的字符串返回到文件呢?查了好多,没有找到答案,请指教啊!!
: 难道先“return s.append(s+"\r\n"); ”,再
: BufferedReader cReader = new BufferedReader(new InputStreamReader(in,charset));
: ...................
直接说需求吧,你要做什么,或者说要达到什么样的效果
实在说不清可以直接贴代码
下面是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());
}
}}
其实lz在pipe()方法里不是已经在写文件了吗
s.append(s+"\r\n"); 是想在最后加个空行?直接在pw.close(); 之前pw.println();就可以了。
而且就算要返回一个最后有空行的StringBuffer也应该是 s.append("\r\n");