java读取txt文件中的数字为什么会是乱码呢???
FileReader fo=new FileReader("d:\\num.txt");
     BufferedReader bwo=new BufferedReader(fo);
     String num=bwo.readLine();
     bwo.close();
        System.out.println(num); 
     int count=Integer.parseInt(num);
     count++;
          //将新的次数写回去
     FileWriter fi=new FileWriter("d:\\num.txt");
BufferedWriter bwi=new BufferedWriter(fi);
bwi.write(count);
      bwi.close();
           pw.println("您是第"+count+"访问者");报错如下:
java.lang.NumberFormatException: For input string: "?0"为什么会这样???是编码问题么,求大神解决啊

解决方案 »

  1.   

    你这个文件,估计用EditPlus编辑过,它会在文件最前面附加3个不可见字符,用来说明该文件的字符集。建议用UtralEdit用二进制模式看看,你就知道了。简单点的方法,就是直接用NotePad新建一个文件,必须新建。
      

  2.   

    bwi.write(count);加上这句试试
    bwi.flush(); 
      

  3.   


    读出时就有问题了,不是写入的问题
    System.out.println(num); 打出来的是:
      

  4.   

    public void write(int c) throws IOException 本就写入单个字符。 可以用PrintWriter将输出流格式化。
    代码改正如下:
    FileReader fo=new FileReader("F:\\num.txt");
            BufferedReader bwo=new BufferedReader(fo);
            String num=bwo.readLine();
            bwo.close();
            System.out.println(num);     
            int count=Integer.parseInt(num);
             count++;
                //将新的次数写回去
            FileWriter fi=new FileWriter("F:\\num.txt");
    //        BufferedWriter bwi=new BufferedWriter(fi);
    //        bwi.write(count);
    //        bwi.flush(); 
    //        bwi.close();
            PrintWriter out = new PrintWriter(new BufferedWriter(fi));
            out.print(count);
            out.close();
            System.out.println("您是第"+count+"访问者");
      

  5.   

    楼主的错误在bwi.write(count);这行代码上,write()方法内的参数有三种,字符数组的一部分,单个字符,字符串的一部分,你这里传递的参数是int 值,固然不行。参考代码如下:
    import java.io.*;
    public class Test
    {
    public static void main(String[] args)throws Exception
    {
    //read form file
    FileReader fr=new FileReader("/home/yh/Downloads/test.txt");
    BufferedReader br=new BufferedReader(fr);
    String num=br.readLine();
    br.close();
    System.out.println(num);                //++ num
    int count=Integer.parseInt(num);
    count++;
    String a=String.valueOf(count);//change int to String //write to file
    FileWriter fw=new FileWriter("/home/yh/Downloads/test.txt");
    BufferedWriter bw=new BufferedWriter(fw);
    bw.write(a,0,a.length());
    bw.flush();
    bw.close();
            
    }
    }
      

  6.   

    当然对于上面的代码中有内存泄漏。稍作修改如下:
    import java.io.*;
    public class Test
    {
    public static void main(String[] args)throws Exception
    {
    //read form file
    FileReader fr=new FileReader("/home/yh/Downloads/test.txt");
    BufferedReader br=new BufferedReader(fr);
    String num=br.readLine();
    br.close();
    System.out.println(num);                //++ num
    int count=Integer.parseInt(num);
    count++;
    num=String.valueOf(count);//注意此处,这样会避免内存修漏
    //byte[] c=num.getBytes(); //write to file
    FileWriter fw=new FileWriter("/home/yh/Downloads/test.txt");
    BufferedWriter bw=new BufferedWriter(fw);
    bw.write(num,0,num.length());
    bw.flush();
    bw.close();
            
    }
    }
      

  7.   

    试了下
    改成这样也行
    bwi.write(count+"");
    因为你用的是write(int)
    是写字符的