Java中最好的多部分base 64编码器是什么?

| 我测试了不同的base64编码器mig64,iHarder,sun等。似乎这些需要将整个数据存储在内存中才能进行转换。 如果我想以多线程方式对大于1gb的大文件(流)进行编码,可以使用哪种编解码器实现而不破坏文件?公用编解码器似乎具有base64outputstream包装器。还有其他解决方案吗? 为了清楚起见,我有一个1TB的文件,该文件需要编码为base64。机器内存2GB RAM,用Java最快的方法是什么?     
已邀请:
我不确定哪种编码器的使用速度更快,您必须对每种编码器进行测量才能确定。但是,您可以通过将文件拆分为多个块来避免内存问题并完成并发。只需确保将它们分割在某个6字节的边界上即可(因为在Base64中它均匀地变成8字节)。 我建议选择一个合理的块大小,并使用“ 0”来管理固定数量的线程来进行处理。您可以在它们之间共享一个“ 1”并写入适当的位置。当然,您必须计算输出块的偏移量(乘以8并除以6)。 老实说,尽管您可能并没有在这里实现很多性能提升。它可能会使随机存取的硬盘不堪重负。我将从使用单个线程对文件进行分块开始。看看这有多快。您可能比您想象的更快地处理1GB文件。粗略的猜想,我会在现代硬件上说1分钟,甚至是要写入要读取的同一驱动器。     

要回复问题请先登录注册