我现在已有自己写好的二进制文件
里面有我按要求的顺序写入的各种数据,包括字符型,整型,浮点型等等我现在想用DataInputStream 的对象将里面的数据按自己的形式读取出来请问有什么办法吗~谢谢

解决方案 »

  1.   

    DataInputStream直接就可以读的啊。
    如果你的数据是用Java写的,那直接读就没问题。
    如果是用C/C++写的,那可能字节是反的。比如C/C++的整型是从低字节到高字节保存的,而Java是从高到低。
    另外一定就是要注意数据的长度。Java的Long是8字节,C的long是4字节我现在没时间给你写示例。如果你还没明白,给我发站内信吧。
      

  2.   

    import Java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;public class DataIODemo{
      public static void main(String[] args) throws IOException {
        DataOutputStream out = new DataOutputStream(new FileOutputStream(
            "demoFile.txt"));
    /**
        double[] d= { 0.1, 0.2, 1.1, 3.9, 4.5 }; //浮点型
        int[]  a = { 12, 8, 13, 29, 50 };   //整形
        char[] ch = { 'a','b','c'};   //字符型
                for (int i = 0; i < d.length; i++) {
          out.writeDouble(d[i]);
          out.writeChar('\t');
          out.writeInt(a[i]);
          out.writeChar('\t');
          out.writeChars(ch[i]);
          out.writeChar('\n');
        }
        out.close();
       */
        
        DataInputStream in = new DataInputStream(new FileInputStream(
            "demoFile.txt"));  //直接读取    double d;
        int a;
        char ch;        try {
          while (true) {
            d= in.readDouble();
            a = in.readInt();
            ch = in.readChar();        
           
            System.out.println( d);
            System.out.println( a);
            System.out.println( ch);
            
          }
        } catch (EOFException e) {
        }
        in.close();
      }
    }