gpt4 book ai didi

java - 将文件转换为字节数组再转换为字符串的更有效方法

转载 作者:行者123 更新时间:2023-11-29 06:08:24 25 4
gpt4 key购买 nike

我有以下方法将文件转换为字节数组,然后再转换为字符串。

        InputStream is = new FileInputStream(new File("c:/original.png"));
String temp = Hex.encodeHexString(IOUtils.toByteArray(is));
System.out.println(temp);
byte[] b = Hex.decodeHex(temp .toCharArray());
OutputStream out = new FileOutputStream(new File("c:/copy.png"));
IOUtils.write(b, out);

它工作正常。问题是 temp 字符串的大小。如果 c:/original.png 文件是 1523KBtemp 大小是 3046KB。有没有更有效的方法将文件转换为不会使文件大小加倍的字符串? (顺便说一句,我明白为什么它的大小是原来的两倍)

或者,我将如何压缩 temp 字符串?

至于字符串的原因。它被存储在只接受字符串的缓存中。该文件实际上是上传到网络服务器。一旦上传即将被下载,它将从缓存而不是数据库中提取。缓存可以通过预测提高搜索性能,我不想每次有人搜索时都调用数据库。

最佳答案

比 Hex 更有效的编码是 Base64,对于大文件,开销至少为 37%。不幸的是,它没有标准库,但 Apache Commons 包含一个类来执行此操作。

        String temp = Base64.encodeBase64String(IOUtils.toByteArray(is));            
byte[] b = Base64.decodeBase64(s);

关于java - 将文件转换为字节数组再转换为字符串的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com