Manipulation de fichiers et de répertoires en Java
1. Vue d'ensemble
En réalité, vous manipulez souvent des fichiers et des dossiers dans le système, les manipulations comprennent l'ajoutêmnt, l'effacement, le changement de nom. Java vous fournit 2 classes pour les faire:
- java.io.File
- java.nio.file.Files
java.io.File
La classe java.io.File représente un fichier (file) ou un répertoire du système (directory), elle est comprise dans Java depuis la version 1.0
java.nio.file.Files
Dans la version 7.0, Java ajoute la classe java.nio.file.Files, qui simplifie la manipulation des fichier et des répertoires, toutes ces méthodes de la classe sont statiques et de la nature (static & nature)
Dans ce poste, je mentionne uniquement l'utilisation de la classe java.io.File, vous pouvez voir l'instruction de l'utilisation de la classe java.nio.file.Files à:
- Thao tác với tập tin và thư mục sử dụng Java NIO Files
2. java.io.File
La classe java.io.File représente un fichier ou un répertoire dans le système,qui représente un chemin (pathname). L'exemple suivante crée un fichier File qui représente un chemin sur Windows ou Unix:
// Window
File apath1 = new File("C:/mydocument/test.txt");
File apath2 = new File("C:/mydocument/java");
// Unix
File apath3 = new File("/mydocument/test.txt");
File apath3 = new File("/mydocument/java");
java.io.File peut représenter un chemin (pathname) qui ne peut pas exister réellement sur le système.S'il existe, il peut être un répertoire (directory) ou un fichier (file).
Le simple exemple suivant crée un objet File qui représente un chemin, et vérifie son existence, imprimer l'information de base si cechemin existe réellement:
FileInfoExample.java
package org.o7planning.filedirectory;
import java.io.File;
import java.util.Date;
public class FileInfoExample {
public static void main(String[] args) {
// Créer un fichier représente un chemin.
File apath = new File("C:/test/mytext.txt");
// Vérifiez s'il existe.
System.out.println("Path exists? " + apath.exists());
if (apath.exists()) {
// Vérifiez si 'apath' est un fichier ou non?
System.out.println("Directory? " + apath.isDirectory());
// Vérifiez si 'apath' est un chemin caché?
System.out.println("Hidden? " + apath.isHidden());
// Le nom simple.
System.out.println("Simple Name: " + apath.getName());
// Le chemin absolu.
System.out.println("Absolute Path: " + apath.getAbsolutePath());
// Vérifiez la taille du fichier (en octets):
System.out.println("Length (bytes): " + apath.length());
// Dernière modification (en milli seconde)
long lastMofifyInMillis = apath.lastModified();
Date lastModifyDate = new Date(lastMofifyInMillis);
System.out.println("Last modify date: " + lastModifyDate);
}
}
}
3. Créez le répertoire
La classe File fournit 2 méthodes de créer un répertoire:
Méthode | Description |
public boolean mkdir() | Créer le répertoire donné par le chemin. Remarque: le répertoire est seulement créé quand le répertoire parent existe. |
public boolean mkdirs() | Créer le répertoire donné par le chemin, comportant le répertoire parent s'il existe pas. |
MakeDirExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class MakeDirExample {
public static void main(String[] args) {
File dir1 = new File("C:/test2/test3");
System.out.println("Pathname: " + dir1.getAbsolutePath());
System.out.println("Path Exists? " + dir1.exists());
System.out.println("Parent Path Exists? " + dir1.getParentFile().exists());
// Avec mkdir(), le répertoire est uniquement créé si le répertoire parent existe.
boolean created = dir1.mkdir();
System.out.println("Directory created? " + created);
System.out.println("--------------------");
File dir2 = new File("C:/test2/test3/test4");
System.out.println("Pathname: " + dir2.getAbsolutePath());
System.out.println("Exists? " + dir2.exists());
//
created = dir1.mkdirs();
System.out.println("Directory created? " + created);
}
}
4. Le filte du fichier
La classe java.io.File fournit quelques méthodes pour extraire des sous- fichiers et des sous- répertoires dans un dossier. Et utilisez FileFilter pour filtrer ces lesdits fichiers.
Méthode | Description |
static File[] listRoots() | Revient une gamme d'objets de fichier qui représente la racine des répertoires. Dans Windows elle sera des lecteurs (C:, D:,..), dans Unix c'est / |
File[] listFiles() | Renvoie une gamme d'objets File, qui sont des sous- fichiers et des sous- répertoires du répertoire actuel. |
File[] listFiles(FilenameFilter filter) | Renvoie une gamme d'objets File, qui sont des sous- fichiers et des sous- répertoires du répertoire actuel, et correspond au filtre de FilenameFilter sur le paramètre. |
File[] listFiles(FileFilter filter) | Renvoie une gamme d'objets File, qui sont des sous- fichiers et des sous- répertoires du répertoire actuel, et correspond au filtre de FileFilter sur le paramètre. |
String[] list() | Revient une gamme de chemins, qui sont des chemins des sous- fichiers et des chemins des sous- répertoires du celui du répertoire actuel. |
String[] list(FilenameFilter filter) | Renvoie une gamme de chemins, qui sont des chemins des sous- fichiers et des chemins des sous- répertoires du celui du répertoire actuel, et correspond au filtre de FiltenameFilter sur le paramètre. |
Par exemple, listez tous les répertoires principaux:
RootFilesExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RootFilesExample {
public static void main(String[] args) {
File[] roots = File.listRoots();
for(File root: roots) {
System.out.println(root.getAbsolutePath());
}
}
}
L'exemple suivant énumère tous les sous- fichiers et les sous- répertoire d'un répertoire:
FileListExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FileListExample {
public static void main(String[] args) {
System.out.println("File[] listFiles():\n");
File dir = new File("C:/test");
File[] children = dir.listFiles();
for (File file : children) {
System.out.println(file.getAbsolutePath());
}
System.out.println("\n-----------------------");
System.out.println("String[] list():\n");
String[] paths = dir.list();
for (String path : paths) {
System.out.println(path);
}
}
}
java.io.FileFilter
** FileFilter **
package java.io;
@FunctionalInterface
public interface FileFilter {
boolean accept(File pathname);
}
L'exemple simple ci-desous utilise FileFilter pour filtrer des fichiers qui se trouve dans un répertoire avec l'extension "txt":
TxtFileFilter.java
package org.o7planning.filedirectory;
import java.io.File;
import java.io.FileFilter;
public class TxtFileFilter implements FileFilter {
// Acceptez seulement 'pathname' est le fichier et son extension (extension) est txt.
@Override
public boolean accept(File pathname) {
if (!pathname.isFile()) {
return false;
}
if (pathname.getAbsolutePath().endsWith(".txt")) {
return true;
}
return false;
}
}
FileFilterExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FileFilterExample {
public static void main(String[] args) {
File dir = new File("C:/test");
File[] txtFiles = dir.listFiles(new TxtFileFilter());
for (File txtFile : txtFiles) {
System.out.println(txtFile.getAbsolutePath());
}
}
}
java.io.FilenameFilter
** FilenameFilter **
package java.io;
@FunctionalInterface
public interface FilenameFilter {
/**
* Tests if a specified file should be included in a file list.
*
* @param dir the directory in which the file was found.
* @param name the name of the file.
* @return <code>true</code> if and only if the name should be
* included in the file list; <code>false</code> otherwise.
*/
boolean accept(File dir, String name);
}
L'exemple utilise FilenameFilter:
TxtFilenameFilter.java
package org.o7planning.filedirectory;
import java.io.File;
import java.io.FilenameFilter;
public class TxtFilenameFilter implements FilenameFilter {
// Acceptez des chemins (path) qui terminent par '.txt'
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(".txt")) {
return true;
}
return false;
}
}
FilenameFilterExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FilenameFilterExample {
public static void main(String[] args) {
File dir = new File("C:/test");
File[] txtFiles = dir.listFiles(new TxtFilenameFilter());
for (File txtFile : txtFiles) {
System.out.println(txtFile.getAbsolutePath());
}
}
}
5. Énumération des fichiers
La classe java.io.File vous fournit quelques méthodes de l'énumérer des répertoires et des fichiers qui sont "enfant direct" du répertoire actuel. L'exemple suivant utilise la récursion pour lister tous des répertoires descendants et des fichiers descendants d'un répertoire.
RecursiveFileExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RecursiveFileExample {
private void fetchChild(File file) {
System.out.println(file.getAbsolutePath());
if (file.isDirectory()) {
File[] children = file.listFiles();
for (File child : children) {
// Récursive (Recursive)
this.fetchChild(child);
}
}
}
public static void main(String[] args) {
RecursiveFileExample example = new RecursiveFileExample();
File dir = new File("C:/test");
example.fetchChild(dir);
}
}
6. Changement le nom (du chemin)
Quand vous utilisez la méthode rename() de la classe File, vous pouvez changer le nom (ou le chemin aussi) d'un fichier ou d'un répertoire. Si vous changez le chemin, assurez- vous que le répertoire parent déjà existe.
Renommer
Le simple exemple ci- dessous change le nom d'un fichier (ou d'un répertoire) mais il ne change pas le chemin principal.
SimpleRenameExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class SimpleRenameExample {
public static void main(String[] args) {
File srcFile = new File("C:/test/test2/abc.txt");
File destFile = new File("C:/test/test2/def.txt");
boolean renamed = srcFile.renameTo(destFile);
System.out.println("Renamed: "+ renamed);
}
}
Le hangement le nomcomprend le chemin principal:
Le changement le nom et le changement le chemin principal sont semblable à l'action "Cut" d'un fichier ou un répertoire à un autre répertoire et ensuite changer son nom.
Remarque: Avec Windows, la méthode File.rename() ne fonctionne pas si vous changez le chemin à un autre lecteur.
RenameAndPathExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RenameAndPathExample {
public static void main(String[] args) {
// Le fichier source (Source file).
File srcFile = new File("C:/test/test2/abc.txt");
// Le fichier destination (Destination file).
File destFile = new File("C:/test2/test3/defgh.txt");
if (!srcFile.exists()) {
System.out.println("Src File doest not exists");
return;
}
// Créez le répertoire parent du fichier cible.
destFile.getParentFile().mkdirs();
boolean renamed = srcFile.renameTo(destFile);
System.out.println("Renamed: " + renamed);
}
}
Java Basic
- Personnaliser le compilateur Java pour traiter votre annotation (Annotation Processing Tool)
- Programmation Java pour l'équipe utilisant Eclipse et SVN
- Le Tutoriel de Java WeakReference
- Le Tutoriel de Java PhantomReference
- Tutoriel sur la compression et la décompression Java
- Configuration d'Eclipse pour utiliser le JDK au lieu de JRE
- Méthodes Java String.format() et printf()
- Syntaxe et nouvelles fonctionnalités de Java 8
- Expression régulière en Java
- Tutoriel de programmation Java multithreading
- Bibliothèques de pilotes JDBC pour différents types de bases de données en Java
- Tutoriel Java JDBC
- Obtenir des valeurs de colonne automatiquement incrémentées lors de l'insertion d'un enregistrement à l'aide de JDBC
- Le Tutoriel de Java Stream
- Le Tutoriel de Java Functional Interface
- Introduction à Raspberry Pi
- Le Tutoriel de Java Predicate
- Classe abstraite et interface en Java
- Modificateurs d'accès en Java
- Le Tutoriel de Java Enum
- Le Tutoriel de Java Annotation
- Comparer et trier en Java
- Le Tutoriel de Java String, StringBuffer et StringBuilder
- Tutoriel de gestion des exceptions Java
- Le Tutoriel de Java Generics
- Manipulation de fichiers et de répertoires en Java
- Le Tutoriel de Java BiPredicate
- Le Tutoriel de Java Consumer
- Le Tutoriel de Java BiConsumer
- Qu'est-ce qui est nécessaire pour commencer avec Java?
- L'histoire de Java et la différence entre Oracle JDK et OpenJDK
- Installer Java sur Windows
- Installer Java sur Ubuntu
- Installer OpenJDK sur Ubuntu
- Installer Eclipse
- Installer Eclipse sur Ubuntu
- Le Tutoriel Java pour débutant
- Histoire des bits et des bytes en informatique
- Types de données dans Java
- Opérations sur les bits
- Le Tutoriel de instruction Java If else
- Le Tutoriel de instruction Java Switch
- Les Boucles en Java
- Les Tableaux (Array) en Java
- JDK Javadoc au format CHM
- Héritage et polymorphisme en Java
- Le Tutoriel de Java Function
- Le Tutoriel de Java BiFunction
- Exemple de Java encoding et decoding utilisant Apache Base64
- Le Tutoriel de Java Reflection
- Invocation de méthode à distance en Java
- Le Tutoriel de Java Socket
- Quelle plate-forme devez-vous choisir pour développer des applications de bureau Java?
- Le Tutoriel de Java Commons IO
- Le Tutoriel de Java Commons Email
- Le Tutoriel de Java Commons Logging
- Comprendre Java System.identityHashCode, Object.hashCode et Object.equals
- Le Tutoriel de Java SoftReference
- Le Tutoriel de Java Supplier
- Programmation orientée aspect Java avec AspectJ (AOP)
Show More
- Tutoriels de programmation Java Servlet/JSP
- Tutoriels de Java Collections Framework
- Tutoriels Java API pour HTML & XML
- Tutoriels Java IO
- Tutoriels Java Date Time
- Tutoriels Spring Boot
- Tutoriels Maven
- Tutoriels Gradle
- Tutoriels Java Web Service
- Tutoriels de programmation Java SWT
- Tutoriels de JavaFX
- Tutoriels Java Oracle ADF
- Tutoriels Struts2
- Tutoriels Spring Cloud