如何在Java中将二进制数据输出到文件?

dez*_*cus 16 java binary-data

我正在尝试将数据写入二进制格式的文件以进行压缩.数据完全由浮点组成,因此我决定将数据量化为0到65535之间的整数,这样数据就可以写成两位无符号整数,最终节省空间.但是,我需要将量化数据输出到二进制文件而不是人类可读的Ascii.

目前这就是我正在做的事情

@param output将包含已经量化的数据的文件作为.txt文件中的字符串

public void generateBinaryRioFile(String materialLibrary,
        String outputFile, String group, String mtlAux) {

    try {

        // Create file
        FileWriter fileStream = new FileWriter(outputFile);
        try {

            BufferedReader br = new BufferedReader(new FileReader(new File(
                    "idx.txt")));

            while ((line = br.readLine()) != null) {
                writer.write(line + "\n");
            }
            try {
                br.close();

            } catch (FileNotFoundException e) {
                e.getMessage();
            } catch (IOException e) {
                e.printStackTrace();
            }           BufferedWriter writer = new BufferedWriter(fileStream);
Run Code Online (Sandbox Code Playgroud)

但是,它将文件写为人类可读的字符串.我需要将它写成二进制数据.如何在Java中实现这一目标?

raj*_*ah9 38

也许这个片段会有所帮助.

 int i = 42;
 DataOutputStream os = new DataOutputStream(new FileOutputStream("C:\\binout.dat"));
 os.writeInt(i);
 os.close();
Run Code Online (Sandbox Code Playgroud)

  • 如果你只想写2字节使用`writeShort()` (3认同)
  • @Ratchet freak Java短片范围从-32,768到32,767(根据http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html).如果OP使用Java short(这是一个好主意,谢谢),他应该在写入之前减去32,768,并在阅读后添加32,768. (3认同)
  • 竖起大拇指为42 :) (2认同)