因为你的str=in.readLine())==null 每次都满足,所以每次都写1。只是我不明白,为什么每次读出的都是null。

解决方案 »

  1.   

    当你使用BufferedWriter out=new BufferedWriter(new FileWriter(file));
    语句时,因为没有指定打开文件的方式,所以默认为重新建立文件,所以原文件将被清空,然后你在用in.readline()读时,当然读到的是空文件,当然
    str=in.readLine())==null ,
    比较好的做法应该是先建立文件读取流,读文件,关闭流,处理数据,建立文件写入流,写文件,关闭流。
    顺便提一句,每一句write()语句后不必用flush方法,这样就起不到buffer的作用了。那还不如就干脆使用FileWriter读写文件好了。
      

  2.   

    BufferedWriter out=new BufferedWriter(new FileWriter(file));
    你每次都执行这个操作,都会重新建一个“count.txt”,当然每次都写1了。
    还有,你写文件的时候用write(int), 读文件用readLine,根本就不匹配阿。import java.io.*;
    public class Hello{
    public static void main(String[] args) throws IOException,FileNotFoundException{

    File file=new File("count.txt");
    String str="";

    BufferedReader in=new BufferedReader(new FileReader(file));
                               str=in.readLine(); // here
                               in.close();
    BufferedWriter out=new BufferedWriter(new FileWriter(file)); if(str == null)
    {out.write("1");
     out.flush();
    }
    else
    {int i=Integer.parseInt(str)+1;
     out.write(""+i); // this one
     out.flush();
    }


    out.close();
    }
    }
      

  3.   

    另外,你的out.write(i)也是不行的,这样会写入unicode值为i的字符,并不是数字的字符串,应该作如下转换:Integer.toString(i);
    比如这样
    import java.io.*;
    public class Hello{
    public static void main(String[] args) throws IOException,FileNotFoundException{

    File file=new File("count.txt");
    String str="";
    BufferedReader in=new BufferedReader(new FileReader(file));

    str=in.readLine();
    in.close();
    BufferedWriter out=new BufferedWriter(new FileWriter(file));
    if(str==null)
    {out.write("1");
    }
    else
    {int i=Integer.parseInt(str)+1;
     out.write(Integer.toString(i));
    }

    out.close();
    }
    }
      

  4.   

    非常不好意思,还得麻烦大家了。楼上的2位,如果我没建立count.txt文件的话,只要我把BufferedReader 写在BufferedWriter out的前面,就会抛出FileNotFoundException的错误。如果我建立了count.txt文件的话,程序就很正常。难道BufferedReader不能自动建立文件吗?
      

  5.   

    reader类只是读文件,当然不负责建立文件了你可以截获FileNotFoundException异常,在该异常处理块中建立文件,
      

  6.   

    我觉得你原来的问题是由这个原因引起的:
    当你用readLine()之后,该输入和输出流的当前点已经到了下一行,你再用write()方法写入的,只能是在下一行,而第一行还是null。所以你每次用readLine()得到的都是null。还有一点,就是netstarry(星光)说的write(i)的问题。
    下面的做法可以解决你原来的问题,不过前提是count.txt文件已经存在:
    import java.io.*;
    public class Pass{
    public static void main(String[] args) throws IOException,FileNotFoundException{ File file=new File("count.txt");
    String str="";
    BufferedWriter out=null;                   BufferedReader in=new BufferedReader(new FileReader(file));
    if((str=in.readLine())==null)
    {
                                          out = new BufferedWriter(new FileWriter(file));
                                          out.write("1");
     out.flush();
    }
    else
    {int i = Integer.parseInt(str)+1;
                                          out = new BufferedWriter(new FileWriter(file));
     out.write(new Integer(i).toString());
     out.flush();
    } in.close();
    out.close();
    }
    }
      

  7.   

    楼上的兄弟,你要是运行一下最开始的那个程序,就知道了,那个文件的内容永远是一创建文件可以这样BufferedWriter out=new BufferedWriter(new FileWriter(file));
    out.write("1");
    out.close把上述代码放到catch FileNotFoundException 块中,就行了
      

  8.   

    请问netstarry(星光) 我不知道你所说的这段异常
    BufferedWriter out=new BufferedWriter(new FileWriter(file));
    out.write("1");
    out.close;
    应该在什么地方去catch,也就是try的范围是什么,谢谢。
      

  9.   

    你把整个main函数中的语句放在try块中,然后catch FileNotFoundException异常,这样的话,main函数后的 
    throws IOException,FileNotFoundException
    就要改为 throws IOException 了,因为函数内部进行了FileNotFoundException异常的处理
      

  10.   

    谢谢 netstarry(星光)
    但上面的程序我测试了一下还是发现有这个问题:
    如果我先建立了一个count.txt空文件,那么为什么执行程序后,count.txt的值还是没有,但如果事先文件内容不为空,文件数值就能增加。不知为什么?
    请帮忙能让存在空文件时就能往里记数,再次感谢!
      

  11.   

    import java.io.*;
    public class Test {
        public static void main(String[] args) throws IOException{
    try{
    File file=new File("count.txt");
    String str="";
    BufferedReader in=new BufferedReader(new FileReader(file));

    str=in.readLine();
    in.close();
    BufferedWriter out=new BufferedWriter(new FileWriter(file));
    if(str==null)
    {out.write("1");
    }
    else
    {int i=Integer.parseInt(str)+1;
     out.write(Integer.toString(i));
    }

    out.close();
    }
    catch(FileNotFoundException e){
    File file=new File("count.txt");
    BufferedWriter out=new BufferedWriter(new FileWriter(file));
    out.write("1");
    out.close(); }
    }
    }