2012-06-19 12 views
0

J'essaie d'ouvrir un fichier zip avec jython en utilisant FileInputStream et ZipInputStream. Mais je reçois étrangement une exception FileNotFoundException lorsque FileInputStream est appelé.jython ouvrir un fichier zip et lire son contenu

Voici mon code:

from java.lang import System 
from java.io import ObjectInputStream, FileInputStream, BufferedInputStream 
from java.util.zip import ZipInputStream, ZipEntry 


file_input_stream = FileInputStream('C:\\Documents and Settings\\usr\\My Documents\\Downloads\\test.zip') 
zip_input_stream = ZipInputStream(BufferedInputStream(file_input_stream)) 

entry = zip_input_stream.getNextEntry() 
entry = zip_input_stream.getNextEntry() 

object_input_stream = ObjectInputStream(zip_input_stream) 
graph.model = object_input_stream.readObject() 

object_input_stream.close() 
zip_input_stream.close() 
file_input_stream.close() 

Mon erreur est:

file_input_stream = FileInputStream('C:\\Documents and Settings\\usr\\My Documents\\Downloads\\test.zip') 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
FileNotFoundException: java.io.FileNotFoundException: C:\Documents and Settings\usr\My Documents\Downloads\test.zip (The system cannot find the file specified) 

Je sais pour sûr que le fichier est dans le bon répertoire, si je l'appelle FileInputStream avec un fichier non-zip , Ça marche. Qu'est-ce que je fais mal ici?

grâce

+0

Ce n'est pas un problème causé par l'absence d'extensions de fichiers, n'est-ce pas? Avez-vous, ou non, montré les extensions de fichiers dans l'explorateur? – Wug

+0

@Wug Je peux voir l'extension bien pour ce fichier zip, mais pas tous les fichiers dans l'explorateur ont leur extension de fichier visible. – mugetsu

Répondre

1

Ouvrez un dossier dans Windows Explorer. Si vous utilisez Windows 7 ou Vista, appuyez sur Alt pour afficher la barre de menu (sous XP, il devrait déjà être visible). Choisissez Outils -> Options de dossier. Dans l'onglet d'affichage, recherchez dans la case une case à cocher intitulée «Masquer les extensions pour les types de fichiers connus» et décochez-la. Sur cette note, le fichier est probablement appelé "test.zip.zip", ce qui expliquerait pourquoi "test.zip" n'est pas trouvé.

+0

oui c'était exactement le cas, merci! – mugetsu

0

Vous savez que vous pouvez utiliser la bibliothèque Python zipfile pour cela, dans votre code Jython.

+0

Son interpréteur de commandes n'affiche pas les extensions de fichier, donc le fichier s'appelle réellement test.zip.zip. – Wug

+0

Je ne doute pas de toi. Suggérant simplement que le code plus simple pourrait être écrit en utilisant la librairie Python que l'API Java. – sudocode

Questions connexes