Witam. Chciałem przyspieszyć wykonywanie się kompresowania w tym kodzie
/**
* Metoda archiwizuje pliki
* @throws FileNotFoundException
* @throws IOException
*/
public void createArchive() throws FileNotFoundException,IOException
{
//Buufer zapewnia przenoszenie bajtow pomiedzy strumieniami
byte[] buffer=new byte[1024];
//Deklaracja i inicjacja strumieni
FileOutputStream out = new FileOutputStream(ARCHIVE_NAME);
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(out));
BufferedInputStream zis = null;
//Rozpoczynanie pakowania
int length=PATH.size();
for(int i=0; i<length;i++)
{
//Tworzenie obiektu pliku ktory ma zostac zarchiwizowany
//Kolejne elementy archiwum reprezentowane są przez obiekty ZipEntry
ZipEntry entry = new ZipEntry(PATH.get(i));
//Dodanie pliku do strumienia
zos.putNextEntry(entry);
FileInputStream in=new FileInputStream( new File(PATH.get(i)));
zis=new BufferedInputStream(in,1024);
//Zapisywanie
int bytes;
while((bytes = zis.read(buffer,0,1024)) >0)
{
zos.write(buffer, 0, bytes);
}
}
//Zamykamy strumienie
zos.closeEntry();
zos.close();
zis.close();
}
Co można przyspieszyć? Użyłem strumieni. Musiałem coś przeoczyć bo jest wolniej jeszcze wolniej.