2012-03-08 18 views
7

Moja aplikacja regularnie ładuje duże pliki. Bez względu na ich rozmiar wszystkie pliki są kompresowane przed przesłaniem na serwer.Czy można wznowić kompresję 7zip?

częścią tego projektu jest do wymagań wznowić ładnie po awarii awarii/mocy, więc teraz kompresja odbywa się w ten sposób:

  • na dużą file.bin pokrojony w plastry N
  • kompresować każdego plaster & przesłać go

W przypadku awarii, odbiór z ostatniego plasterka.

Aby zoptymalizować prędkość wysyłania, obecnie szukam możliwości wysłania całego pliku (przesyłanie zostanie wznowione, jeśli się nie powiodło) zamiast wysyłać plasterki jeden po drugim, więc szukam kompresji całego pliku zamiast kompresowania każdego plasterka.

Aktualnie używam 7z.dll. Zastanawiam się, czy jest możliwe, w przypadku awarii zasilania, powiedzieć 7z do wznowienia kompresji.

wiem, że zawsze może wdrożyć własną rutynę kompresji i realizować taką funkcję, ale przed idzie tą drogą zastanawiam się, czy to możliwe, aby to zrobić w 7z (które już mają doskonały współczynnik kompresji)

Odpowiedz

7

jako o ile wiem, żaden algorytm kompresji nie obsługuje tego. Prawdopodobnie będziesz musiał skompresować plik źródłowy od początku za każdym razem, odrzucając wszystkie bajty wyjściowe, aż osiągniesz żądaną pozycję wznowienia, a następnie możesz wysłać pozostałe bajty wyjściowe od tego miejsca.

+1

+1 za oferowanie rekompresji danych dla OP;) –

+0

Oops. Poprawiono: -p –

Powiązane problemy