У меня есть следующий способ преобразования файла в байтовый массив, а затем в строку и обратно.
InputStream is = new FileInputStream(new File("c:/original.png"));
String temp = Hex.encodeHexString(IOUtils.toByteArray(is));
System.out.println(temp);
byte[] b = Hex.decodeHex(temp .toCharArray());
OutputStream out = new FileOutputStream(new File("c:/copy.png"));
IOUtils.write(b, out);
Работает нормально.Проблема в размере temp
строки.Если файл c:/original.png
равен 1523KB
, то размер temp
равен 3046KB
.Есть ли более эффективный способ преобразования файла в строку, которая бы не удваивала размер файла?(Кстати, я понимаю, почему это примерно в два раза больше)
В качестве альтернативы, как бы я пошел на сжатие строки temp
?
Насколько причина для строки.Он хранится в кеше, который будет принимать только строки.Файл фактически загружается на веб-сервер.Как только выгрузка будет готова, она будет извлечена из кеша, а не из базы данных.И кэш предназначен для повышения производительности поиска с помощью прогнозов, что я не хочу вызывать базу данных каждый раз, когда кто-то ищет.