Как читать различные xml-файлы из zip

#java #spring #spring-boot #java-ee-8

Вопрос:

Мой вопрос заключается в том, как считывать данные файлов из zip, но на самом деле я уже реализовал эту часть, но проблема в том, что у меня разные файлы в zip (все xml), я все равно не хочу анализировать эти файлы с помощью xml-анализатора, я просто хочу прочитать его, в настоящее время мой код читает все xml-файлы, и я добавляю все данные в одну строку, Как я могу читать и хранить данные разных файлов отдельно.

Мой Код-

 public class unzipFile {
    public static void main(String[] args) throws IOException {
        String zipFileName = "people.zip";
        StringBuilder s = new StringBuilder();
        byte[] buffer = new byte[1024];
        ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName));
        ZipEntry zipEntry;
        int read;
        while ((zipEntry = zis.getNextEntry())!= null) {
            while ((read = zis.read(buffer, 0, 1024)) >= 0) {
                s.append(new String(buffer, 0, read));
            }
        }
        while (zipEntry != null){
            zipEntry = zis.getNextEntry();
        }
        zis.closeEntry();
        zis.close();
        System.out.println("Unzip complete");
        System.out.println("S = " s);
    } 
 

Он будет печатать все данные за один раз из всех файлов, что мне нужно изменить, чтобы читать данные разных файлов отдельно ? кто-нибудь, пожалуйста, помогите мне
Спасибо!

Комментарии:

1.Вы добавляете данные для чтения StringBuilder s в цикл while. Что ты хочешь с этим делать?

2. Просто создайте новое StringBuilder для каждого ZipEntry и создайте Collection для хранения всех StringBuilder s.

3. @Orifjon Я хочу распечатать все данные из всех файлов, в s я добавляю все данные и печатаю их, но я хочу хранить данные разных файлов в разных переменных, а не добавлять их в один буферизатор строк, я не знаю, как это сделать.

4. @Amara., Вы можете создать новый StringBuilder в цикле и добавить его в коллекцию, как упоминал @Abra.

Ответ №1:

При этом все файлы будут распечатаны на out . Вы можете изменить while блок в соответствии с вашими реальными потребностями.

 public class unzipFile {
public static void main(String[] args) throws IOException {
    String zipFileName = "people.zip";
    StringBuilder s = new StringBuilder();
    byte[] buffer = new byte[1024];
    ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName));
    ZipEntry zipEntry;
    int read;
    while ((zipEntry = zis.getNextEntry())!= null) {
        System.out.println("File = " zipEntry.getName());
        while ((read = zis.read(buffer, 0, 1024)) >= 0) {
            s.append(new String(buffer, 0, read));
        }
        System.out.println("S = " s);
        s.clear();
    }

    zis.closeEntry();
    zis.close();
    System.out.println("Unzip complete");

} 
 

Комментарии:

1. Не удается разрешить метод «очистить» в «StringBuilder», я думаю, что мы не можем использовать здесь «очистить»!!