Bonjour à tous,
J'ai un projet à faire en java sur la gestion des informations binaires.
Un morceau du programme à réaliser consiste à visualiser les droits d’accès à un fichier.
On nous fourni une classe qui ressemble à ça :
import java.io.File;
public class FileMode {
private static final String STAT_COMMAND = "stat --format=%f ";
/**
* Retourne le mode d'un fichier.
*
* @param fileName
* nom du fichier (chemin relatif ou absolu)
*
* @return mode du fichier
*
* @throws Exception
* si le fichier n'est pas accessible
*/
public static short getMode(String fileName) throws Exception {
File f = new File(fileName);
if (!f.exists())
throw new Exception("Fichier " + fileName + " introuvable");
Process process = Runtime.getRuntime().exec(STAT_COMMAND + fileName);
byte[] bytes = new byte[4];
process.getInputStream().read(bytes);
return (short) Integer.parseInt(new String(bytes), 16);
}
}
Et on doit s'en servir pour présenter les droits en lecture, écriture et exécution d'un fichier en java.
Donc voici mon problème : la commande "stat --format=%f " fonctionne sous linux. J'ai une machine virtuel sur laquelle tester ce code, et il fonctionne très bien. Mais pour des raisons pratique, j'aimerais obtenir le même résultat sur windows.
Le but de cette méthode est de fournir une suite de bits que l'on peut extraire via un masque.
J'ai cherché sur internet et n'ai trouvé que des commandes pour gérer les fichiers, style cacls /r toto pour donner les droits en lecture sur le fichier toto. Mais ceci est équivalent à un chmod u+r toto sous Linux. Il ne fourni donc pas les informations souhaités.
Merci d'avance pour votre aide.
P.S. : si vous vous posez la question du pourquoi ? C'est parce que même à l'université, on travail sur windows. Linux est utilisé sur machine virtuel. Donc si je veut présenter mon travail, ça sera plus sympa de le faire sans passer par la VM.