#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», я думаю, что мы не можем использовать здесь «очистить»!!