一个中英文混合的文本文件如何转换成二进制文件?
生成的二进制文件又如何能转换回文本文件?

解决方案 »

  1.   

    和中英文没关系
    主要是编码
    直接把字符串读取出来,然后通过String.getBytes()的到二进制,然后怎么处理都可以
    反向操作一下就出来String了
      

  2.   

    就是用OutputStream来写呀通过一个InputStream来读取这个文件,读上来的就是byte数组,然后直接通过OutputStream输入到另外一个文件,这个文件就是二进制文件了。
    读取的时候直接把这个文件的所有byte读取到内存,然后String str=new String(byte[])就可以了
    你不考虑中文的时候有问题吗?我估计你遇到的问题是编码问题,读取到数据后通过new String(byte[],"UTF-8")将数组转换为指定的编码格式。不过这个格式要和文本文件的编码格式相同。
      

  3.   


                FileReader fredr = new FileReader("test.txt");
                BufferedReader brder = new BufferedReader((Reader) fredr);            OutputStream O = new FileOutputStream("test1.txt");
                DataOutputStream Out = new DataOutputStream(O);
                
                String temp = "";
                while ((temp = brder.readLine()) != null) {
                    Out.writeBytes(new String(temp.toString().getBytes("ISO8859_1")));
                    System.out.println(temp);
                }            FileInputStream fis = new FileInputStream("test1.txt");
                
                FileOutputStream O1 = new FileOutputStream("test2.txt");
                DataOutputStream Out1 = new DataOutputStream(O1);
                
                
                byte[] buf = new byte[1024];
                int len;
                while((len=fis.read(buf))>-1){
                    Out1.write(buf);
                    System.out.println(new String(buf, "GB2312"));
                }  System.out.println中文能够正常显示,但是打开生成的文件就是乱码!!
                
      

  4.   

    System.out.println(new String(buf, "GB2312"));
    这里强制转化了String的编码为GB2312,但是写文件没有这样转换。
    你要知道你写的文件实际上是个二进制文件,要想不是乱麻,就必须在写入byte数组的时候保证这些byte数组可以被系统转换为可识别字符。
    写入前将字符串也转码一下就可以了
      

  5.   

    Out1.write((new String(buf1, "GB2312")).getBytes("ISO8859_1"));
    这样转换吗可是中文还是乱码
      

  6.   

    你为什么非要通过ISO8859_1码来写呢为什么要转码呢?你从第一个文件读取出来,不要转码直接写不可以吗?
      

  7.   

    你看看我的理解对吗1源文件为a.txt,里面的内容是中文和英文,可以显示(不是乱码)
    2要求通过OutputStream将a.txt写入一个二进制文件(要求可以显示,不是乱码)
    现在是无论转码与否都是乱码
    对不对?
      

  8.   

    public static void main(String args[]) throws Exception {
        BufferedReader br = null; FileOutputStream fos = null;
        try {
          br = new BufferedReader(new FileReader("e:\\a.txt"));
          fos = new FileOutputStream("e:\\b.m");
          String str;
          while ( (str = br.readLine()) != null) {
            fos.write(str.getBytes());
            fos.write("\r\n".getBytes());
          }
          fos.flush();
        }
        catch (IOException ex) {
        }finally{
          try {
            br.close();
          }
          catch (Exception ex1) {
          }
          try {
            fos.close();
          }
          catch (Exception ex2) {
          }
        }
      }
    没问题的
      

  9.   

    恩,试了一下用fos.write(str.getBytes());没有问题
    我原来用的是fos.writeBytes(str)  就是乱码这两个方法有什么区别吗?
      

  10.   

    DataOutputStream.writeBytes(String str);是把String拆分成char,然后把char转换为byte写入的。这样对于英文字母没问题,因为英文字母占有一个字节,也就是说char和byte之间转换没问题。但对于中文就不可以了。
    DataOutputStream要小心用,他对数据自己进行了封装。如果是DataOutputStream和DataInputStream对接就没关系,否则很容易出问题
      

  11.   

    fool_leave   果然大牛 狂