站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题IO问题

IO问题

摘要: IO问题


使用BufferedReader从一个txt中读取数据,然后输出到另一个txt文档中去,输出的时候,如果使用
PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("k://out.txt")));
输出就会少两行,
如果使用PrintStream out = new PrintStream(new FileOutputStream("k://out.txt"));
就正常,这是为什么???


不可能,刚试过


晕啊 我把程序贴出来了
public static String read(String path) throws Exception
{
StringBuffer sb = new StringBuffer();
String s = "";
BufferedReader in = new BufferedReader(
new FileReader(path));
PrintStream out = new PrintStream(new BufferedOutputStream(
new FileOutputStream("k://out.txt")));

while ((s = in.readLine()) != null)
{
sb.append(s);
sb.append("/n");
Pattern p = Pattern.compile("//S+");
Matcher m = p.matcher(s);
System.setOut(out);
while (m.find())
{
System.out.println(m.group());
}

System.out.println("----------------------");
}
System.out.println(sb.toString());

return sb.toString();

}
这个是没改的程序!
注意倒数第二句代码System.out.println(sb.toString());
如果注释掉,就出现少几行的问题
如果不注释掉,就输出正常



public static void main(String[] args) {
try {
FileReader fr = new FileReader("d://in.txt");
PrintStream out = new PrintStream(new BufferedOutputStream(
new FileOutputStream("d://out.txt")));
PrintStream out1 = new PrintStream(new FileOutputStream(
"d://out1.txt"));
int i = 0;
char[] cb = new char[128];
while ((i = fr.read(cb)) != -1) {
out.println(cb);
out1.println(cb);
}
out.close();
out1.close();
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


1:你把系统默认输出指向k://out.txt,所以倒数第二句代码System.out.println(sb.toString());如果注释掉,就会少输出一行;
2:你的in,out流应该关闭
3:我这里ok的


public static String read(String path) throws Exception {
StringBuffer sb = new StringBuffer();
String s = "";
BufferedReader in = new BufferedReader(new FileReader(path));
PrintStream out = new PrintStream(new BufferedOutputStream(
new FileOutputStream("d://out.txt")));

while ((s = in.readLine()) != null) {
sb.append(s);
sb.append("/n");
Pattern p = Pattern.compile("//S+");
Matcher m = p.matcher(s);
System.setOut(out);
while (m.find()) {
System.out.println(m.group());
}
System.out.println("----------------------");
}
System.out.println(sb.toString());
in.close();
out.close();
return sb.toString();
}


解决了 谢!


↑返回目录
前一篇: 求用iText,将html转pdf的例子。。
后一篇: StringTokenizer