Bonjour,

Je rencontre un soucis lors de la lecture d'un fichier caché sous Windows. C'est un fichier dans lequel je stocke des informations sous la forme d'objets sérialisés. Je parviens à écrire le fichier avec les commandes suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
// Ouverture d'un flux de sortie vers le fichier specifie
// PATH_FICHIER est une constante definissant le chemin du fichier voulu
FileOutputStream fos = new FileOutputStream(PATH_FICHIER);
// Creation d'un "flux objet" avec le flux fichier
ObjectOutputStream oos = new ObjectOutputStream(fos);
try {
     // Serialisation : ecriture de l'objet dans le flux de sortie
     oos.writeObject(monObjet);
     // On vide le tampon
     oos.flush();
} finally {
     // Fermeture des flux
     try {
          oos.close();
     } finally {
          fos.close();
     }
}
Par contre, lorsque je procède de manière analogue pour lire le fichier, j'ai une execption (fichier introuvable). Le code pour la lecture est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
// Ouverture d'un flux d'entrée depuis le fichier specifie
FileInputStream fis = new FileInputStream(PATH_FICHIER);
// Creation d'un "flux objet" avec le flux fichier
ObjectInputStream ois = new ObjectInputStream(fis);
try {
     // Deserialisation : lecture de l'objet depuis le flux d'entree
     return (ClasseDeMonObjet) ois.readObject();
} finally {
     // On ferme les flux
     try {
          ois.close();
     } finally {
          fis.close();
     }
}
A noter que ce même code fonctionnait correctement tant que le fichier en question n'était pas un fichier caché.

Enfin, je rend le fichier caché de la façon suivante (code appelé après chaque écriture du fichier) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
String[] cmd = { "attrib", "+H",PATH_FICHIER };
Process process = Runtime.getRuntime().exec(cmd);
process.getOutputStream().close();
process.getErrorStream().close();
Si quelqu'un a une explication (et une solution...), je suis preneur.
Merci.

Mako.