Mój przypadek użycia wymaga mnie do otwarcia pliku txt, powiedzmy abc.txt który znajduje się wewnątrz archiwum zip, który zawiera pary klucz-wartość w postaciModyfikowanie pliku tekstowego w formie archiwum ZIP w Javie
klucz1 = value1
klucz2 = value2
.. i tak dalej, gdzie każda para klucz-wartość jest w nowej linii. Muszę zmienić jedną wartość odpowiadającą określonemu kluczowi i umieścić plik tekstowy z powrotem w nowej kopii archiwum. Jak to zrobić w java?
Moja próba tak daleko:
ZipFile zipFile = new ZipFile("test.zip");
final ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("out.zip"));
for(Enumeration e = zipFile.entries(); e.hasMoreElements();) {
ZipEntry entryIn = (ZipEntry) e.nextElement();
if(!entryIn.getName().equalsIgnoreCase("abc.txt")){
zos.putNextEntry(entryIn);
InputStream is = zipFile.getInputStream(entryIn);
byte [] buf = new byte[1024];
int len;
while((len = (is.read(buf))) > 0) {
zos.write(buf, 0, len);
}
}
else{
// I'm not sure what to do here
// Tried a few things and the file gets corrupt
}
zos.closeEntry();
}
zos.close();
A więc inne niż wypłukanie strumienia wyjściowego, co nie działa? – MadProgrammer
Nie dostałem cię. Nie opróżniałem wyraźnie strumienia wyjściowego. – Prabhakar