Je cours un programme pour lister l'information de tous les dossiers stockés dans le dossier. Je veux obtenir les propriétés d'un fichier (le plus important pour moi est la taille du fichier, mais j'aimerais aussi avoir d'autres propriétés, comme la date de modification, etc.).Accès refusé - Obtenir les propriétés du fichier?
Mon problème est quand j'arrive au fichier qui est réellement utilisé par un autre programme, je ne peux pas obtenir BasicFileAtrributtes
du fichier. J'ai essayé d'utiliser File
, URL
, RandomFileAcces
, mais tous ces requiese pour ouvrir un fichier, et un jet d'exception comme:
java.io.FileNotFoundException: C:\pagefile.sys (Access is denied)
Yat-il une option en Java pour obtenir ces propriétés? Je préfère ne pas utiliser de bibliothèques supplémentaires, pour garder une petite taille de l'application.
L'application est basée sur java JRE7. Je m'appelle java.nio.file.SimpleFileVisitor
pour visiter tous les fichiers. Voici fragment de mon code, où je suis l'erreur:
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc){
FileInfo temp=new FileInfo(new FileInfo().repairName(file.toString()));
temp.isLeaf=true;
temp.fName=temp.fName.replace(strIn, "");
File fis=null;
try {
fis=new File(file.toAbsolutePath().toString());
if(fis.exists())
System.out.println("exists");
if(fis.isFile())
System.out.println("isFile");
System.out.println(file.toAbsolutePath().toString());
temp.fSize=new BigInteger(new Long(fis.length()).toString());
} catch(Exception e){
e.printStackTrace();
}
node.add(temp, true);
FileListCreator.jProgressBar.setValue(++count);
return CONTINUE;
}
Pouvez-vous montrer le code que vous utilisez? Peut-être que vous essayez accidentellement d'écrire pour lire uniquement les fichiers. – Jivings
Essayez d'appeler 'fis.exists();' et 'fis.isFile();' après l'initialisation 'fis'. Est-ce qu'ils retournent tous les deux 'true'? – MockerTim
@MockerTim: non, ils retournent tous les deux faux. Je n'ai pas de problème avec d'autres fichiers protégés par le système (comme ntldr), mais celui-ci ne peut pas être résolu en fichier régulier. Je peux voir la taille et les propriétés du fichier à travers le Total Commander. – filipbe