如何使用DataInputStream从文件中读取二进制数据并打印到控制台?

时间:2014-03-01 11:23:33

标签: java

这是一个问题:编写一个程序,使用DataInputStream从binary.txt读取行星细节,并在标准输出上打印行星细节。

但是,下面的程序会抛出IOException。我无法弄清楚这个问题。任何帮助将不胜感激。

import java.io.*;

public class LA4ex2b  {
    public static void main(String[] args) throws IOException {
        DataInputStream input=null;
        try
        {
            input= new DataInputStream(new FileInputStream("C:/Users/user/workspace/LA4ex2a/binary.txt"));
            String str;
            // read until the string read is null i.e. read till end of file
            while ((str = input.readUTF()) != null) {
                String token[] = str.split(" "); // tokenizes the string with
                                                    // space as a delimeter

                for (int i = 0; i <token.length; i++)
                {
                    if (IsDouble.IsaDouble(token[i]))



System.out.print(Double.parseDouble(token[i]));
                    else
                        System.out.print(token[i]);
                }
            }


        }
        catch (IOException e) {
            e.printStackTrace();
        }

        finally
        {
            if (input!= null)
                input.close();
        }


    }

}

2 个答案:

答案 0 :(得分:2)

如果您正在阅读二进制文件,则不能假设它存储为文本。

相反,您必须事先知道每个字段数据类型是什么,并像

一样读取它们
    DataInputStream input= new DataInputStream(new FileInputStream(new File("xyz")));
    double d = input.readDouble();
    int i = input.readInt();
    char c = input.readChar();

答案 1 :(得分:0)

正如你所看到的那样,有“水星” - 行星名称 - 但没有双重“1.23”的文字表示,所以它实际上是二进制数据。也许input.readDouble?始终在互联网上搜索javadoc。