从文件读取时获取不同的字节数组而不是写入文件

时间:2016-04-26 18:19:24

标签: java file input output bytearray

我将我的字节数组写入文件:

PrintWriter pw = new PrintWriter(new FileOutputStream(fileOutput, true));
pw.write(new String(cryptogram, Charset.defaultCharset()));
pw.close();

然后,我正在从这样的文件中读取它:

String cryptogramString = new String();
while (scPriv.hasNext()) {
    linePriv = scPriv.nextLine();
    cryptogramString += linePriv;
}

但我不知道如何从byte[]获取cryptogramString。我正在尝试这个:

byte[] b = cryptogramString.getBytes(Charset.defaultCharset());
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(cryptogram));

但它没有返回相同的值。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您应该决定是写文本还是二进制文件。

加密数据总是二进制的,这意味着你不应该使用Reader / Writer / String类。

try (FileOutputstream out = new FileOutputStream(filename)) {
    out.write(bytes);
}

回读

byte[] bytes = new byte[(int) (new File(filename).length())];
try (FileInputstream in = new FileInputStream(filename)) {
    in.read(bytes);
}
  

我有一个包含xml然后是纯文本的文件,所以我无法读取整个文件

您也无法将二进制文件写入文本文件。您可以使用base64对其进行编码。

Storing base64 data in XML?