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.(1);
               if (in.read() != '\n')
                  in.reset();
               break;
           }
           sb.append((char)c);
           c = in.read();
        } return sb.toString();
    }请问下上面那个程序为什么无法显示cn.txt文件中的内容,只是刷的一下就没了,那证明while循环还一直在跳,可是bs.readLine(bin)怎么会取不完?谢谢各位帮助

解决方案 »

  1.   

    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;
    }
    )
      

  2.   

    如果用BufferedWriter写入txt的话就要用flush()方法因为要刷缓冲区的字节
      

  3.   

    你这句代码是有问题的
    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函数一旦读到头了就将此标志为置位。
      

  4.   

    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语句有问题。
      

  5.   

    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; 

    )是不是应该这样写哦?
      

  6.   

    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; 

    )
    对么??