Je voudrais ignorer les fichiers cachés lors de l'extraction d'un zip. Y a-t-il un moyen d'identifier qu'un ZipEntry appartient à un fichier 'caché'?En Java, comment puis-je identifier par programme un fichier caché dans un fichier zip?
Répondre
Si c'est sur Windows, il n'y a aucun moyen de le faire. Le ZipEntry ne contient pas de telles informations. Vous pourriez être en mesure d'écrire votre propre fermeture éclair pour stocker les informations dans le champ ExtraInfo. Sous Unix, vous pouvez contourner le problème en vérifiant le point principal du nom de fichier.
* Le ZipEntry ne contient pas ces informations *. Vrai, mais l'entrée zip réelle dans le fichier zip * inclut * cette information. ZIP permet aux attributs de fichiers d'être stockés avec l'entrée Zip. Un fichier zip créé à partir d'un volume NTFS peut stocker les attributs de fichier, y compris l'attribut Caché s'il est présent dans le fichier d'origine. Toutes les bibliothèques zip ne gèrent pas ces attributs, et en particulier les classes zip qui sont intégrées à Java peuvent ignorer ces métadonnées (je ne sais pas, vous le croirez), mais ce n'est pas à proprement parler "impossible". – Cheeso
Vous avez accès aux attributs de fichier à l'aide de DotNetZip, par exemple. Le document de référence pour cela est ici: http://cheeso.members.winisp.net/DotNetZipHelp/html/640bac96-0fb1-51fe-36d0-8a923c0d467f.htm Je comprends que c'est .NET, pas Java, mais le point est: techniquement, c'est possible. – Cheeso
http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#isHidden%28%29
Il aurait dû être conservé quand ils ont créé le zip.
@downvoter soin d'expliquer pourquoi? – corsiKa
Euh j'imagine parce que vous fournissez des "réponses" qui sont insensées. L'attribut caché est un drapeau sur ntfs (ou un préfixe de point sur unix), qu'est-ce qui vous fait penser qu'un fichier a une idée si oui ou non il est caché, en particulier quand il passe entre les systèmes de fichiers? Renseignez-vous, avant d'essayer d'éduquer les autres: http://blogs.technet.com/b/askcore/archive/2010/08/25/ntfs-file-attributes.aspx –
@ b1naryatr0phy Eh bien, c'est exactement ce que cette méthode fait. Souvenez-vous que l'objet File n'est pas un descripteur du fichier directement. C'est juste un tas de métadonnées sur le fichier. Le texte exact sur le lien que j'ai fourni est "Teste si le fichier nommé par ce chemin abstrait est un fichier caché.La définition exacte de hidden dépend du système.Dans les systèmes UNIX, un fichier est considéré comme caché si son nom commence par un caractère point ('.') Sur les systèmes Microsoft Windows, un fichier est considéré comme caché s'il a été marqué comme tel dans le système de fichiers. " – corsiKa
Qu'est-ce qu'un fichier caché? Sous Linux, c'est un fichier qui commence par un point, sous Windows c'est probablement un attribut de fichier. – extraneon
Sous Windows, c'est certainement un attribut de fichier. Ce qui n'est rien de plus qu'un drapeau dans un enregistrement sur le système de fichiers. –