Java png二进制文件的base64编码不';t工作JDK 11.0.3+;7 Eclipse 4.11.0
下面的代码Java png二进制文件的base64编码不';t工作JDK 11.0.3+;7 Eclipse 4.11.0,java,eclipse,java-11,Java,Eclipse,Java 11,下面的代码 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
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版本中的一个显示问题。很可能是在类似Eclipse的IDE中执行此Java代码 例如,Eclipse有一个错误,即没有打印太长的行:/ 在您的例子中,base64编码的字符串有34500个字符,足够大,足以触发此错误 在Windows 10 64位上使用OpenJDK 1.0.7的最新版本Eclipse(2020-03)似乎能够显示更多字符(例如,在快速测试中,可以看到一行67000个字符)
但是不要忘记在Eclipse设置(运行/调试->控制台)中增加
控制台缓冲区大小。很可能是在类似Eclipse的IDE中执行此Java代码
例如,Eclipse有一个错误,即没有打印太长的行:/
在您的例子中,base64编码的字符串有34500个字符,足够大,足以触发此错误
在Windows 10 64位上使用OpenJDK 1.0.7的最新版本Eclipse(2020-03)似乎能够显示更多字符(例如,在快速测试中,可以看到一行67000个字符)
但是不要忘记在Eclipse设置(运行/调试->控制台)中增加控制台缓冲区大小。您是如何验证文件是否为空的?可能使用的文本编辑器也有同样的问题?使用十六进制编辑器,以确保它不是一个显示问题。无论如何,您都应该将OpenJDK升级到最新版本11.0.7。根据我的经验,11.0.3有一些严重的错误,例如关于TLS连接。@Robert:Thx,默认的Eclipse文本编辑器也有同样的问题。所以,Eclipse中的显示问题。您是如何验证文件是否为空的?可能使用的文本编辑器也有同样的问题?使用十六进制编辑器,以确保它不是一个显示问题。无论如何,您都应该将OpenJDK升级到最新版本11.0.7。根据我的经验,11.0.3有一些严重的错误,例如关于TLS连接。@Robert:Thx,默认的Eclipse文本编辑器也有同样的问题。所以,Eclipse中的显示问题。