Java IO - размер выходного файла больше исходного файла

Я пытаюсь написать чтение любого файла и записать то же самое в другом месте.

File file=new File("<PathToFile>");
String str=FileUtils.readFileToString(file);

Запись str в другом месте без каких-либо изменений в str

File writefile=new File("<PathToWriteFile>");
FileUtils.writeStringToFile(writefile, str);

Проблема в том, что размер выходного файла больше исходного файла

Обновлено:- Я знаю решение, т.е. читать и записывать файлы побайтно, но мой вопрос: ПОЧЕМУ это происходит?

Не читайте его как String, читайте как байты

MadProgrammer 19.09.2018 07:59
Проверять этот вопрос, возможен дубликат
Vinnie 19.09.2018 07:59

Если размер меняется, вам, скорее всего, нужно рассматривать файл как двоичный. Возможно, ваш ввод двоичный, не имеет ожидаемой кодировки или имеет \n вместо \r\n.

Peter Lawrey 19.09.2018 08:18

Пройдите по ссылке выше, readFileToString (File) устарел. Он использует кодировку по умолчанию. Попробуйте указать кодировку как: "UTF-8" в readFileToString (File fN, String encoding) и проверьте еще раз. Если это удается, это должна быть проблема кодирования, когда для чтения данных могут использоваться дополнительные байты без необходимости.

user3511557 19.09.2018 08:22

Я бы предложил использовать BufferedReader (InputStreamReader (FileInputStream ())) для чтения данных из текстового файла и BufferedOutput для записи в текстовый файл.

user3511557 19.09.2018 08:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
107
1

Ответы 1

Вероятно, это другая кодировка строки - разница в пространстве, занимаемом каждым символом, может быть примерно X2. Вы можете проверить это с помощью любого текстового редактора, который показывает кодировку (например, с помощью блокнота, если выполнить «сохранить как», не выполняя его, кодировка будет отображаться в диалоговом окне «Сохранить»).

В качестве решения вы можете либо

  1. Чтение / запись как двоичных данных
  2. Используйте writeStringToFile (File, String, Charset), если вы знаете правильную кодировку

Другие вопросы по теме