Следующий код
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 КиБ в файловой системе.
Принять JDK 11.0.3 + 7
Затмение: 2019-03 (4.11. 0)
Решение
Спасибо Роберту. Это, очевидно, только проблема с отображением в моей версии Eclipse .