2012-12-12 8 views
16

Wpisy w pliku ZIP zawierają pełną nazwę ścieżki, ponieważ (jestem pewien kolejnej części) archiwum ZIP nie jest zorganizowane jako katalogi. Metadane zawierają informacje o tym, w jaki sposób pliki mają być przechowywane (w katalogach).Separatory plików z nazwą ścieżki ZipEntry?

Jeśli utworzę plik ZIP w systemie Windows, po rozpakowaniu danych w innym systemie operacyjnym, np. Mac OS X, struktura plików pozostaje taka, jak kiedyś w Windows. Czy to dlatego, że unzipper jest przeznaczony do obsługi tego, czy też dlatego, że separatory plików wewnątrz ZIP są standardowe?

Pytam o to, ponieważ próbuję znaleźć wpis w pliku ZIP, używając nazwy spakowanego pliku. Ale który separator plików powinienem użyć, aby działał w systemach innych niż Windows?

Używam języka Java, a metoda: .getName() z ZipEntry podaje ścieżkę przy użyciu separatora plików systemu Windows \. Czy wystarczy, jeśli użyję separatora java File.separator, aby działał na innym systemie operacyjnym? Czy będę musiał spróbować znaleźć mój plik z każdym możliwym separatorem?

+0

, więc po rozpakowaniu nie chcesz rozpakować pliku z bezwzględną ścieżką? – vels4j

+0

nie, problem polega na tym, że gdy szukam pliku, jak ustawić separatory plików w mojej ścieżce, aby działał bez względu na to, czy system operacyjny jest plataform dla mojej aplikacji ... – Ordiel

Odpowiedz

11

Separator pliku jest zależny od aplikacji, która tworzy plik zip. Niektóre aplikacje używają separatora plików systemowych, podczas gdy inne używają "cywilizowanego" ukośnika "/". Tak więc, jeśli tworzysz plik zip, a następnie go zużywasz, możesz po prostu użyć ukośnika w przód jako separatora plików. Jeśli plik zip jest tworzony gdzie indziej, powinieneś się dowiedzieć, który separator został użyty. Nie znam prostego sposobu, ale możesz użyć brutalnej metody i sprawdzić oba typy separatorów w miarę postępów.

Niektóre aplikacje, szczególnie niestandardowe kody tworzenia zip, mogą mieszać separatory na różnych pozycjach zip, więc nie zapomnij sprawdzić każdego wpisu.

5

W .zip file specification stany:

4.4.17.1 Nazwa pliku, z opcjonalną ścieżkę względną. Ścieżka zapisana NIE MOŻE zawierać dysku urządzenia ani literki urządzenia lub ukośnika wiodącego. Wszystkie ukośniki MUSZĄ być ukośne przednie// w przeciwieństwie do ukośników wstecz "\" w celu zapewnienia kompatybilności z Amiga i systemami plików UNIX. Jeśli dane wejściowe pochodzą ze standardowego wejścia , nie ma pola nazwy pliku.

Powiązane problemy