par , 22/05/2016 à 11h57 (530 Affichages)
Tout est dans le code…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import static java.nio.file.StandardCopyOption.ATOMIC_MOVE;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author herve
*/
public class PlayNIO {
long size=0;
public PlayNIO() {
//tester les classes FileSystem & FileSystems
testFileSystem();
//tester la classe SimpleFileVisitor
testFileVisitor();
}
/**
* Tester la classe SimpleFileVisitor
* Permet de voir comment on peut visiter l'ensemble
* des fichiers d'un répertoire donné
* On s'interesse ici à la méthode walkFileTree de la classe Files.
*/
private void testFileVisitor(){
try {
System.out.println("___________________________________");
System.out.println("List home directory");
System.out.println("___________________________________");
//définir le chemin à exploiter en définissant un objet Path p que l'on
//crée grâce à la méthode get de la classe fabrique Paths
Path p=Paths.get("/home");
//on va ensuite explorer l'arbre complet de notre répertoire
//en faisant appel a la méthode walkFileTree de la classe Files
//walkFileTree(path, objet_SimpleFileVisitor)
//on remarquera ici l'utilisation d'une "inner classe"
Files.walkFileTree(p, new SimpleFileVisitor<Path>(){
//on redéfini la méthode FileVisitResult de la classe SimpleFileVisitor
//d'ou l'annotation Override
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException{
//on va cumuler la taille totale de l'ensemble des fichiers
size=size+Files.size(file);
//on affiche le nom du fichier et sa taille
System.out.println(file.toString()+" size:"+Files.size(file));
//on retourne l'ordre FileVisitResult.CONTINUE
//pour indiquer a notre méthode walkFileTree de passer au fichier suivant si possible
return FileVisitResult.CONTINUE;
}
});
} catch (IOException ex) {
Logger.getLogger(PlayNIO.class.getName()).log(Level.SEVERE, null, ex);
}
//affichage de la taille totale en octets et Mo occupé par les fichiers
System.out.println("Total size ="+size+" octets "+size/(1024*1024)+" Mo");
}
/**
* Tester les classes FileSystem & FileSystems
* et également exploiter les FileStore
* et les root Directories.
*/
private void testFileSystem(){
try {
//recuperer le filesystem par defaut
FileSystem fs= FileSystems.getDefault();
//informations diverses sur le filesystem par defaut
System.out.println("___________________________________");
System.out.println("Nom de l'objet: "+fs.toString());
System.out.println("Separateur par defaut: "+fs.getSeparator());
System.out.println("Is Open ? "+fs.isOpen());
System.out.println("Is read Only ? "+fs.isReadOnly());
System.out.println("___________________________________");
//attributs du fileSystem
//sont retournés dans un Set
Set<String> setAttrib=fs.supportedFileAttributeViews();
System.out.println("List FileSystem attributes :");
//on va lister les différents attributs contenu dans la classe collection Set
for(String sta:setAttrib){
System.out.println("Attribut: "+sta);
}
//consulter le fileStore
//le fileStore correspond à l'unité de disque physique ou logique
System.out.println("___________________________________");
//obtenir la liste des files stores
//ces filestore sont stocké dans une collection Iterable
Iterable<FileStore> store=fs.getFileStores();
System.out.println("Get fileStore informations");
//pour chaque fileStore on réalise les opération ci dessous
for (FileStore fstor:store){
try {
System.out.println("-------------------------------------------");
System.out.println("Nom : "+fstor.name()+" type : "+fstor.type());
System.out.println("\tIs Read Only: "+fstor.isReadOnly());
System.out.println("\tTotal space: "+fstor.getTotalSpace()+"bytes / Unallocated Space: "+fstor.getUnallocatedSpace()+"bytes / Usable Space: "+fstor.getUsableSpace()+"bytes");
System.out.println("\tBasic attribute ? "+fstor.supportsFileAttributeView("basic"));
System.out.println("\tDos attribute ? "+fstor.supportsFileAttributeView("dos"));
System.out.println("\tUnix attribute ? "+fstor.supportsFileAttributeView("unix"));
System.out.println("\tPosix attribute ? "+fstor.supportsFileAttributeView("posix"));
} catch (IOException ex) {}
}
//Exploration du root name
System.out.println("___________________________________");
//on obtient l'ensemble des noms root dans une classe collection Iterable
Iterable<Path> rootDir=fs.getRootDirectories();
//il n'y a plus qu'a afficher par iteration ces données
for (Path px:rootDir){
System.out.println("Root Name: "+px.toString());
}
} catch (Exception ex) { }
}
/**
* main entry point
* @param args
*/
public static void main(String[] args) {
new PlayNIO();
}
} |
FIN