Преждевременная ошибка конца файла, когда Java читает и записывает файлы данных XML

Я использую библиотеку JDOM для чтения и записи файлов XML через сервлеты Java.

Проблема в том, что когда я отправляю много запросов с использованием AJAX на свои сервлеты, которые читают и записывают данные в файлы XML, много раз не отображается ошибка: Преждевременный конец файла. Как я могу синхронизировать все эти операции чтения/записи в файлы или есть ли другой способ предотвратить эту проблему? Дайте мне знать, если потребуется дополнительная информация.

Поможет ли использование потоков в этой ситуации?

Большое спасибо!


person shuby_rocks    schedule 02.04.2009    source источник


Ответы (4)


Два возможных решения:

  • Запишите свои файлы в thename.xml.part, а затем, после завершения/закрытия, переименуйте в thename.xml, что делает запись более близкой к атомарной — читатель не может прочитать ее, пока она не будет выполнена, пока она смотрит только для файлов ".xml".
  • или, используйте базу данных, атомарность - это то, что они делают.
person Ry4an Brase    schedule 02.04.2009
comment
не могли бы вы уточнить ответ? Я получаю ту же ошибку, но не могу понять ваш ответ. - person FullStack; 31.05.2015
comment
@ Ry4an безупречное решение! - person Gaurav; 07.02.2020

Я столкнулся с такой проблемой, но точно не то же самое. Делюсь своим опытом по этой ошибке. Пожалуйста, извините за неудобства.

Я столкнулся со следующей проблемой

  1. Мне нужно сформировать xml-файл с динамическими переменными данными. И отправьте этот xml на URL-адрес с помощью PostMethod в java.

  2. Нормально работает. Но когда данные динамической переменной равны нулю. Затем он показывает «Преждевременный конец файла».

Решение:

  1. Просто проверьте, является ли переменная нулевой или нет. И это работает для меня.
person Community    schedule 12.04.2011
comment
Просто, к вашему сведению, совсем не то же самое, я думаю, это не совсем то, что вы имеете в виду. Должно быть не совсем то же самое. :) - person Ben; 25.03.2012

Попробуйте добавить все запросы на запись в Очередь обработки, а затем создать/добавить XML с помощью этих элементов очереди.

person HimanshuKalra    schedule 12.01.2018

Я также столкнулся с этой проблемой. Мой опыт...

  1. Чистый проект
  2. Перестроить проект

тогда он будет работать успешно....

person Bilal Mustafa    schedule 02.11.2017