就是我要读一个文本文件,但是要以二进制的形式输出比如在VC中,可以直接创建一个"wb"就可以了但是在JAVA中如何做出输出二进制文件呢~~~
急急急~~~~谢谢~~最好有代码点
说出思想也行

解决方案 »

  1.   

    http://topic.csdn.net/t/20040711/07/3163731.html
    http://blog.csdn.net/cg_i/archive/2007/12/16/1942233.aspx楼主看看这两个 肯定会有所启发
      

  2.   

    字符流的文件复制一
            FileReader fr = new FileReader("a.txt");//要复制的文本文件 
            BufferedReader br = new BufferedReader(fr);//用读字符流缓冲区套住         FileWriter fw = new FileWriter("b.txt");//副本文件 
            BufferedWriter bw = new BufferedWriter(fw);//用写字符流缓冲区套住         while(true) { 
                String temp = br.readLine(); 
                if(temp == null) { 
                    break; 
                } 
                bw.write(temp); 
                bw.newLine(); 
            } 
             
            bw.close(); 
            fw.close(); 
            br.close(); 
            fr.close();字符流文件复制二
            BufferedReader br = new BufferedReader( 
                    new InputStreamReader(new FileInputStream("a.txt")));         PrintWriter pw = new PrintWriter(new FileOutputStream("b.txt"));         while(true) { 
                String temp = br.readLine(); 
                if(temp == null) { 
                    break; 
                } 
                pw.println(temp); 
            } 
             
            pw.close(); 
            br.close();字节流文件复制
        InputStream in = new FileInputStream("a.txt"); 
             
            OutputStream out = new FileOutputStream("b.txt"); 
             
            byte[] bytes = new byte[1024]; 
            while(true) { 
                int len = in.read(bytes); 
                if(len == -1){ 
                    break; 
                } 
                out.write(bytes, 0, len); 
            }
      

  3.   


    import java.io.*; 
    public class TestIO{ 
    public static void main(String[] args) 
    throws IOException{ 
    //1.以行为单位从一个文件读取数据 
    BufferedReader in = 
    new BufferedReader( 
    new FileReader("F:\\nepalon\\TestIO.java")); 
    String s, s2 = new String(); 
    while((s = in.readLine()) != null) 
    s2 += s + "\n"; 
    in.close(); //1b. 接收键盘的输入 
    BufferedReader stdin = 
    new BufferedReader( 
    new InputStreamReader(System.in)); 
    System.out.println("Enter a line:"); 
    System.out.println(stdin.readLine()); //2. 从一个String对象中读取数据 
    StringReader in2 = new StringReader(s2); 
    int c; 
    while((c = in2.read()) != -1) 
    System.out.println((char)c); 
    in2.close(); //3. 从内存取出格式化输入 
    try{ 
    DataInputStream in3 = 
    new DataInputStream( 
    new ByteArrayInputStream(s2.getBytes())); 
    while(true) 
    System.out.println((char)in3.readByte()); 

    catch(EOFException e){ 
    System.out.println("End of stream"); 
    } //4. 输出到文件 
    try{ 
    BufferedReader in4 = 
    new BufferedReader( 
    new StringReader(s2)); 
    PrintWriter out1 = 
    new PrintWriter( 
    new BufferedWriter( 
    new FileWriter("F:\\nepalon\\ TestIO.out"))); 
    int lineCount = 1; 
    while((s = in4.readLine()) != null) 
    out1.println(lineCount++ + ":" + s); 
    out1.close(); 
    in4.close(); 

    atch(EOFException ex){ 
    System.out.println("End of stream"); 
    } //5. 数据的存储和恢复 
    try{ 
    DataOutputStream out2 = 
    new DataOutputStream( 
    new BufferedOutputStream( 
    new FileOutputStream("F:\\nepalon\\ Data.txt"))); 
    out2.writeDouble(3.1415926); 
    out2.writeChars("\nThas was pi:writeChars\n"); 
    out2.writeBytes("Thas was pi:writeByte\n"); 
    out2.close(); 
    DataInputStream in5 = 
    new DataInputStream( 
    new BufferedInputStream( 
    new FileInputStream("F:\\nepalon\\ Data.txt"))); 
    BufferedReader in5br = 
    new BufferedReader( 
    new InputStreamReader(in5)); 
    System.out.println(in5.readDouble()); 
    System.out.println(in5br.readLine()); 
    System.out.println(in5br.readLine()); 

    catch(EOFException e){ 
    System.out.println("End of stream"); 
    } //6. 通过RandomAccessFile操作文件 
    RandomAccessFile rf = 
    new RandomAccessFile("F:\\nepalon\\ rtest.dat", "rw"); 
    for(int i=0; i<10; i++) 
    rf.writeDouble(i*1.414); 
    rf.close(); rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "r"); 
    for(int i=0; i<10; i++) 
    System.out.println("Value " + i + ":" + rf.readDouble()); 
    rf.close(); rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "rw"); 
    rf.seek(5*8); 
    rf.writeDouble(47.0001); 
    rf.close(); rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat", "r"); 
    for(int i=0; i<10; i++) 
    System.out.println("Value " + i + ":" + rf.readDouble()); 
    rf.close(); 


    用下面的方式就应该可输出了 
    BufferedReader in = new BufferedReader(new FileReader("b.txt"));
      

  4.   

             非常感谢上面各位的解答但是我还是觉得不能实际解决我的问题因为我的文本是包括很多数据的,有INT,DOUBLE,STRING 等等
    但是现在需要把这个文本转成二进制文件简而言之就是输出的文本打开后是乱码?比如说形式是
    begin
    117.000000 477.000000 239.000000 756.000000
    1
    图层 1
    7
    L
    0.216000
    0
    0
    0
    5
    157.248000 499.464000
    349.056000 499.464000
    349.056000 623.088000
    157.248000 623.088000
    157.248000 499.464000
      

  5.   

    以字符输入流读取文件,把读取的字符串经过一定的转换,比如把数字的字符串转化为int或double类型,然后用字节流写入到文件
      

  6.   

      macleane
     能方便给点代码吗?
    谢谢了
    PS   chiphuo 的代码是成功的,但是转换后的文件不是二进制的吧
         打开后仍然可以正常显示~
      

  7.   

           macleane  的思想是对的~~   但是我对IO还不太熟悉~~~  
      

  8.   

    使用ByteArrayInputStream进行读操作,ByteArrayOutputStream进行写操作
      

  9.   

    楼主,文本文件里的所有数据都是字符型的,取出来全都是String喵~~`
      

  10.   

       那我要把STring 的转成各种类型的数据输出到二进制文件该怎么做呢
      

  11.   

    针对你的需求,其实很简单,读写文件的时候使用MD5或者DES加解密就行了,算法网上很多
      

  12.   

    BigInteger  changer = new BigInteger("你好");
    big.toString(2); 可以得到2进制
    不知道是不是你要的。呵呵
      

  13.   

    字符串存进去肯定还是正常的显示,数字存进去是你想要的乱码
    用BufferedReader来读
    比如你读到一个字符串"100"
    String s = reader.readLine();
    int i = Integer.parseInt(s);
    然后通过DataOutputStream流写到文件中:
    output.writeInt(i);不知道你要的是不是这个,而且不同类型的数据占的字节数不一样,你要读出来就必须有固定的格式
      

  14.   

    转化类型,用DES加密解决就行。
      

  15.   

    建议你去看下javax.imageio.stream里面的两个接口ImageInputStream和ImageOutputStream中的readBit()和writeBit(int i)方法。自己去研究下吧。