2012-12-12 22 views
16

Le voci ZIP memorizzano il nome percorso completo della voce perché (sono sicuro della parte successiva) l'archivio ZIP non è organizzato come directory. I metadati contengono le informazioni su come devono essere memorizzati i file (all'interno delle directory).Separatori di file del nome del percorso di ZipEntry?

Se creo un file ZIP in Windows, quando decomprimo i dati in un altro SO, ad es. Mac OS X, la struttura dei file rimane come in passato. È perché l'unzipper è progettato per gestire questo, o perché i separatori di file all'interno dello ZIP sono standard?

Sto chiedendo questo perché sto cercando di trovare una voce all'interno di un file ZIP utilizzando il nome del file zippato. Ma quale separatore di file dovrei usare per farlo funzionare in sistemi diversi da Windows?

Sto utilizzando Java e il metodo: .getName() del ZipEntry mi fornisce il percorso utilizzando il separatore di file di Windows \. Sarebbe sufficiente se utilizzo il separatore java File.separator per farlo funzionare su un altro sistema operativo? O dovrò cercare di trovare il mio file con ogni possibile separatore?

+0

quindi quando si decomprime non si desidera decomprimere il file con percorso assoluto? – vels4j

+0

no, il problema è che, mentre cerco il file, come dovrei impostare i separatori di file nel mio percorso per farlo funzionare, non importa whar OS è il plataform per la mia applicazione ... – Ordiel

risposta

11

Il separatore di file dipende dall'applicazione che crea il file zip. Alcune applicazioni usano il separatore di file di sistema, mentre alcuni usano la barra "civilizzata" "/". Quindi, se stai creando il file zip e poi lo stai consumando, puoi semplicemente usare una barra diretta come separatore di file. Se il file zip è stato creato da qualche altra parte, dovresti scoprire quale separatore è stato utilizzato. Non conosco un modo semplice, ma puoi utilizzare un metodo bruto e controllare entrambi i tipi di separatore mentre avanzi.

Alcune applicazioni, in particolare i codici di creazione zip personalizzati, possono combinare i separatori in diverse voci zip, quindi non dimenticare di controllare ogni voce.

5

I .zip file specification stati:

4.4.17.1 Il nome del file, con il percorso relativo opzionale. Il percorso memorizzato NON DEVE contenere un'unità o la lettera del dispositivo o una barra iniziale. Tutte le barre DEVONO essere barre di avanzamento '/' al contrario di barre rovesciate '\' per compatibilità con Amiga e file system UNIX ecc. Se l'input proviene dall'ingresso standard , non esiste un campo per il nome del file.