FileReader与FileWriter读写"*.txt"的问题
我编写了一个程序,目的是用FileWriter将一些整型数写入一个txt(fun.txt)文件,整型数的范围从0~2000左右。当我把值超过128的整型数写入文件中的,由于txt无法显示(128已经超出ASCII的表示范围),就自动将这些数变成 "? ",当我从刚写入的txt中读出数据时,那些值超过128的全都变 "? "代替,读出的值都变成63( "? "的ASCII值)。 
 我也度过将大于128的数拆成低8位与高8位,用FileOutputStream分别写入txt中,如129就变成0000000100000001即把1   1写入,但是由于ASCII值为1的也不能显示,txt就干脆把它丢掉,没有写入到文件中。 
 现在的问题是txt把我的数据都改了,根本读不出来,有哪会兄弟有办法帮帮我啊,有没有一些文件是直接存储二进制的,那样就不用那么麻烦了! 
 谢谢!
------解决方案--------------------你是要将整数写入txt还是将ascii码按顺序写入txt啊   
 如果是整数写入根本不存在ascii大于128的问题 
 for(int i = 0; i  < 2000; i++) 
   writer.write(Integer.toString(i) +  "\n ");   
 如果是ascii的话有部分字符显示不出来当然是正常的,因为它根本不是可见字符
------解决方案--------------------这是将整数转换成二进制的代码,你参考以下 
 public class bit { 
         public static void main(String[] args) { 
                 int di = Integer.parseInt(args[0]); 
                 if (di  < 0) 
                         di = (~Math.abs(di)) + 1; 
                 System.out.println( "Bits:  " + Integer.toBinaryString(di)); 
                        } 
 } 
------解决方案--------------------import java.io.*; 
 public class Test 
 { 
 	public static void main(String args[]) 
 	{ 
 		try 
 		{ 
 		DataOutputStream dout = new DataOutputStream(new FileOutputStream( "fun.txt ")); 
 		for(int i= 0;i  <= 2000;i++) 
 		{ 
           dout.writeInt(i); 
           dout.flush(); 
          } 
           dout.close(); 
         DataInputStream din = new DataInputStream(new FileInputStream( "fun.txt ")); 
         for(int j = 0;j <=2000;j++) 
         { 
           if(j%10 ==0) 
           System.out.println( " " +din.readInt()); 
           System.out.print( " " +din.readInt() + '\t '); 
         } 
         din.close(); 
         }catch(Exception e){} 
 	} 
 }   
 参考下