黑马程序员技术交流社区

标题: 将字符串转换成二进制然后输出的问题 [打印本页]

作者: 孟浩然    时间: 2012-6-4 12:03
标题: 将字符串转换成二进制然后输出的问题
写了个程序,可以将指定文件的内容转换成二进制,然后输出到一个文件中去,源码:
  1. import java.io.*;

  2. class StrToBinary{
  3.        
  4.         public static void main(String args[]){
  5.                
  6.                            
  7.                 BufferedReader bufr=null;
  8.                 BufferedWriter bufw=null;
  9.                
  10.                 try{
  11.                        
  12.                         bufr=new BufferedReader(new FileReader("Tmax.java"));
  13.                         bufw=new BufferedWriter(new FileWriter("Tmax.txt"));                       
  14.                
  15.             String line=null;                       
  16.                         while((line=bufr.readLine())!=null){
  17.                                
  18.                                 //调用strToBinary方法
  19.                                   String result=strToBinary(line);       
  20.                                   bufw.write(result);
  21.                                   bufw.newLine();
  22.                                 //System.out.println(result);
  23.                     
  24.             }  
  25.             
  26.                        
  27.                 }catch(IOException e){
  28.                        
  29.                         throw new RuntimeException("读写失败");
  30.                 }
  31.                
  32.                 finally{
  33.                        
  34.                         try{
  35.                                
  36.                                 if(bufr!=null) bufr.close();
  37.                                
  38.                         }catch(IOException e){
  39.                                
  40.                                 throw new RuntimeException("读取流关闭失败");
  41.                         }
  42.                        
  43.                         try{
  44.                                
  45.                                 if(bufw!=null) bufw.close();
  46.                                
  47.                         }catch(IOException e){
  48.                                
  49.                                 throw new RuntimeException("写入流关闭失败");
  50.                         }
  51.                 }
  52.                                
  53. }       
  54.         //定义字符串转换成二进制方法
  55.         static String strToBinary(String str){
  56.                
  57.                 char[] strChar=str.toCharArray();
  58.         String result=null;        
  59.         for(int i=0;i<strChar.length;i++){
  60.                                                       
  61.             result +=Integer.toBinaryString(strChar[i]);
  62.                
  63.         }
  64.        
  65.            return result;
  66. }
  67. }
复制代码
我读取了一个.java文件,于是问题出来了,如果在那个java文件代码前面加入一些空格,就会报告异常:
  1. --------------------Configuration: <Default>--------------------
  2. Exception in thread "main" java.lang.NullPointerException
  3.         at java.io.Writer.write(Writer.java:140)
  4.         at StrToBinary.main(StrToBinary.java:21)

  5. Process completed.
复制代码
如果把那个java文件里的开始的空格去掉,运行后打印出来的是二进制文件,但是每个二进制字符之前都会有个null,不知为何故
  1. null1110000111010111000101101100110100111000111000001100011110110011000011110011111001110000010101001101101110000111110001111011
  2. null1001
复制代码

作者: 孟浩然    时间: 2012-6-4 17:22
这个问题有人指点一下吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2