如何以1和0的字符串序列读取二进制文件?

罗马

我创建了一个霍夫曼编码算法,然后我编写了二进制代码String并使用FileOutputStream将其放入二进制文件中DataOutputStream

但是现在我无法理解如何阅读它?我需要从二进制文件中获取 1 和 0 序列。

没有像这样.readString()方法DataInputStream

try{
    FileChooser fileChooser = new FileChooser();
    fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Binary", "*.bin"));
    FileOutputStream fileOutputStream = new FileOutputStream(fileChooser.showSaveDialog(window));
    DataOutputStream outputStream = new DataOutputStream(fileOutputStream);
    outputStream.writeChars(Main.string_ready_encode);
}catch (IOException e){
    e.printStackTrace();
}

Main.string_ready_encode 包含就绪序列

神经元

您编写代码的问题在于您没有指定文件格式。我们现在只能读取文件,如果我们知道它有多少字节。如果您知道这一点,您可以通过执行以下操作来阅读它:

try (DataInputStream stream = new DataInputStream(new FileInputStream(f))) {
    byte[] bytes = new byte[NUMBER_OF_BYTES];
    stream.read(bytes);
    String content = new String(bytes);
    System.out.println(content);
} catch (IOException e) {
    e.printStackTrace();
}

但我实际上建议你用一些已知的文件格式重写你的文件,如下所示:

try (Writer writer = new OutputStreamWriter(new FileOutputStream(f), Charsets.UTF_8)) {
    writer.write(Main.stringReadyEncode, 0, Main.stringReadyEncode.length());
} catch (IOException x) {
    e.printStackTrace();
}

并像阅读任何其他文件一样阅读它:

try (BufferedReader r = Files.newBufferedReader(f.toPath(), Charsets.UTF_8)) {
    String line;
    while((line = r.readLine()) != null) {
        // do whatever you want with line
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

只需确保替换Charsets.UTF_8为您在写入文件时使用的任何编码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

转换二进制1和0的整数(或字符串)的阵列,以它们的α相当于在Java中

将二进制(0 | 1)numpy转换为整数还是二进制字符串?

将二进制文件读入字符串

从相同的FileInputStream读取字符串和二进制文件

在Ruby中以字符串形式读取二进制文件

在二进制字符串中查找等于1和0的子字符串数

查找二进制字符串中包含相等数量的0和1的最大子字符串

需要将二进制形式的1和0的字符串转换为十进制数

如何从二进制文件读取字符串?

如何从相同的自定义编码二进制文件中定义二进制(1和0)序列以构成汇编语言?

如何从vb.net中的二进制文件读取vb6定长字符串

从C中的二进制文件读取字符串时发生访问冲突

如何以二进制格式打开文件。(1和0)

无法将1和0的字符串写入二进制文件,C ++

c ++使用fstream从二进制文件读取字符串

从二进制文件读取以null结尾的字符串C ++

将二进制文件读取为字符串,但类型混合

如何从二进制文件中读取以nul结尾的字符串

如何从C#的BinaryWriter创建的二进制文件中读取php中的字符串

替换二进制文件中的字符串

将二进制字符串(ASCII)转换为二进制文件

关闭程序后如何从二进制文件中读取字符串

将从二进制文件读取的字符串转换为整数

将 0 和 1 的字符串转换为它的二进制等效 python

将大二进制字符串写入二进制文件

将(和读取)链表(包含动态字符串)保存到 C 中的二进制文件中

将字符串作为二进制写入/读取到随机访问的文件中

读取二进制字符串,用作二进制字符串python

将二进制文件转换为 0 和 1 的字符串