首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >base64二进制编码11.0.3+7 11.0.3+7 Eclipse4.11.0

base64二进制编码11.0.3+7 11.0.3+7 Eclipse4.11.0
EN

Stack Overflow用户
提问于 2020-04-21 10:40:01
回答 1查看 353关注 0票数 1

以下代码

代码语言:javascript
复制
import java.util.Base64;

try (final InputStream fis = new FileInputStream(new File("foobar.png"))) {
    final String str = Base64.getEncoder().encodeToString(fis.readAllBytes());

    System.out.println("+++" + str + "+++"); // prints nothing!

    System.out.println("+++" + str.length() + "+++"); // +++34500+++
    System.out.println("+++" + str.isBlank() + "+++"); // +++false+++

    try (final OutputStream os = new FileOutputStream(new File("foobar.txt"))) {
        os.write(str.getBytes()); // empty file!
    }

    final String str2 = "foobar";
    try (final OutputStream os2 = new FileOutputStream(new File("foobar2.txt"))) {
        os2.write(Base64.getEncoder().encodeToString(str2.getBytes()); // This works!
    }
}

不会打印任何东西,这是System.out.println的第一次调用。怎么了?此外,当我用base64编码的字符串编写文件时,文件是空的。

当我将所有读取的字节写回没有base64编码的文件系统时,这两个文件是相等的。所以,没关系。但是编码有什么问题呢?

foobar.png在文件系统上有26 KiB。

采用JDK 11.0.3+7

月食: 2019-03 (4.11.0)

解决方案

多亏了罗伯特。这显然只是我的Eclipse版本中的显示问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 13:29:11

很可能是在Eclipse这样的IDE中执行此Java代码。

例如,Eclipse有一个错误,没有打印太长的行:541104/23406

在您的示例中,base64编码的字符串有34500个字符,足以触发此bug。

在Windows1064bit上使用OpenJDK 1.0.7的Eclipse最新版本(2020-03)似乎能够显示更多的字符(例如,在快速测试中,一行67000字符是可见的)。

但是,不要忘记增加Console buffer size设置中的-> (运行/调试->控制台)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61341554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档