有人可以向我解释为什么下面的第二个println语句不打印任何内容吗?即使我使用encodeToString()方法而不是encode()方法,我仍然无法打印Base64编码的字符串。编码的字符串不是空的,我可以使用它的length()方法进行验证。我尝试了一个不同的文件,一个二进制文件,问题仍然存在。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
public class Test {
public static void main(String... args) {
try {
byte[] content = Files.readAllBytes(Paths.get("D:\\config.properties"));
System.out.println(content.length); // correctly prints the length
byte[] encoded = Base64.getEncoder().encode(content);
System.out.println(new String(encoded)); // prints nothing
content = Base64.getDecoder().decode(encoded);
System.out.println(new String(content)); // prints original content
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
编辑
此问题仅在我在Eclipse中运行程序时存在。当我从命令提示符运行它时,可以打印出Base64编码的字符串。