BufferedStream读取问题

xianjiangao 2008-04-11 12:53:02
	 import java.io.*;

class BufferedStream
{
public static void main(String args[])
{
BufferedStream bs = new BufferedStream();

try
{
InputStream in = new FileInputStream("cn.txt");
//创建一个256字节的缓存区
BufferedInputStream bin = new BufferedInputStream(in, 256);

String str = bs.readLine(bin);
while(str!=null){
System.out.println(str);
str = bs.readLine(bin);
}

}


catch (IOException ex) {
System.err.println(ex);
}
}

public String readLine(BufferedInputStream in) throws IOException
{ //将bufferedinputstream按行读取
StringBuffer sb = new StringBuffer();

int c = in.read();
while (c != -1)
{
if (c == '\n'){
sb.append('\n');
break;
}
if (c == '\r')
{
in.mark(1);
if (in.read() != '\n')
in.reset();
break;
}
sb.append((char)c);
c = in.read();
}

return sb.toString();
}


请问下上面那个程序为什么无法显示cn.txt文件中的内容,只是刷的一下就没了,那证明while循环还一直在跳,可是bs.readLine(bin)怎么会取不完?谢谢各位帮助
...全文
202 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThirdDimension 2008-05-05
  • 打赏
  • 举报
回复
缓冲区要刷新要关闭。
psyl 2008-04-11
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class BufferedStream {
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
}

这个代码 最后的 .close语句有问题。
hmsuccess 2008-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shili150 的回复:]
import java.io.*;

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(fr);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
[/Quote]
jianfeihit 2008-04-11
  • 打赏
  • 举报
回复
你这句代码是有问题的
while(str!=null){
System.out.println(str);
str = bs.readLine(bin);
}
因为sb.toString()是永远不为null的。
这里你用c != -1来判断文件是否结束是对的,但是你没有用它来控制
System.out.println(str);
str = bs.readLine(bin);
导致你即使文件已经读到头了还在一直打屏。建议加一个全局的标志位,在主函数中用此标志位来控制打屏。调用的readLine函数一旦读到头了就将此标志为置位。
haoxiongok 2008-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shili150 的回复:]
import java.io.*;

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(fr);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
[/Quote]
duzhonghua 2008-04-11
  • 打赏
  • 举报
回复
打开完了,要关闭
shili150 2008-04-11
  • 打赏
  • 举报
回复
如果用BufferedWriter写入txt的话

就要用flush()方法

因为要刷缓冲区的字节
shili150 2008-04-11
  • 打赏
  • 举报
回复
import java.io.*;

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(fr);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
xianjiangao 2008-04-11
  • 打赏
  • 举报
回复
各位牛人帮忙呀~~
wren4255 2008-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shili150 的回复:]
import java.io.*;

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(fr);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
[/Quote]
import java.io.*;

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
对么??
wren4255 2008-04-11
  • 打赏
  • 举报
回复
import java.io.*; 

public class BufferedStream(
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)


是不是应该这样写哦?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧