【问题标题】:Read data from ByteArrayOutputStream从 ByteArrayOutputStream 读取数据
【发布时间】:2019-01-04 11:53:00
【问题描述】:

我已经解密了 bytearrayoutputstream 中的数据。我想读取每一行中的数据(不确定是否可能)。谁能指导我如何做到这一点。

主要要求是读取加密文件,解密和读取数据而不写入磁盘。我已经介绍了加密和解密部分,但是如果不写入磁盘就无法读取数据。有些人建议使用 bytearrayoutputStream 所以现在卡住了。

ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(inputBytes.length);
byteArrayOutputStream.write(outputBytes);

如果我只是打印变量,它会立即给我所有数据,如下所示。

SQlServer,"connection string","user name","password"
Oracle,"connection string","user name","password"

我正在尝试明智地读取数据行,以便匹配服务器名并获取用户名和其他详细信息。

【问题讨论】:

  • 你试过用toByteArray吗?
  • @LeonardoAlvesMachado 是的不工作......你能建议你是否有办法使用它。
  • 正确的方法是根本没有ByteArrayOutputStream,而是将文件输入流包装在CipherInputStream或自定义FilterInputStream中,以便在读取时对其进行解密.应该不需要读取整个文件并将其解密为字节数组,然后再读回。
  • @ShubhamSahay 我不太明白您为什么要使用输出类(在您的情况下用于写入流)来读取内容。当我说使用toByteArray 时,我的意思是给你它包含的数据,这样你就可以在你选择的输入类(用于读取数据)中使用它......如果你不能从它,您也许可以从代码中的变量outputBytes 中获取它。

标签: java arrays bytearrayoutputstream


【解决方案1】:

要阅读byte[],您可以使用

ByteArrayInputStream in = new ByteArrayInputStream(outputBytes);

并将其作为文本行阅读,您可以使用

BufferedReader br = new BufferedReader(new InputStreamReader(in));
for (String line; (line = br.readLine()) != null; ) {
    // do something with the line
}

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 2018-03-20
    • 2020-01-28
    • 2015-06-29
    • 2020-03-11
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多