Quelques scénarios nécessitent que vous copiez un fichier en Java. Vous créez peut-être un script simple pour automatiser les processus d'un gestionnaire de fichiers. Vous pourriez même écrire une application complète qui fonctionne avec des fichiers.
Il existe de nombreuses façons de copier un fichier, en fonction des performances requises, de la simplicité ou même de la version de Java que vous utilisez.
Comment copier des fichiers à l'aide de FileInputStream et FileOutputStream
Cette méthode fonctionne en lisant manuellement chaque octet de données du fichier et en l'écrivant dans une nouvelle destination. Contrairement à la méthode Files.copy ci-dessous, vous pouvez utiliser cette méthode pour toutes les versions de Java, y compris Java 6 et versions antérieures.
Il utilise la classe FileInputStream pour lire des octets à partir d'un fichier source et FileOutputStream pour écrire des octets dans la destination.
- Créez un fichier n'importe où sur votre ordinateur appelé "SimpleScript.java".
- Ouvrez le fichier dans un éditeur de texte ou un IDE et copiez le code de base suivant dans l'application.
importer java.io. IOException ;
classerSimpleScript{
Publiquestatiqueannulerprincipale(arguments de chaîne [])jette IOException {
// Votre code ici
}
} - Importez ces classes Input Stream et Output Stream supplémentaires en haut du fichier, juste après la première instruction d'importation.
importer java.io. Dossier;
importer java.io. Flux d'entrée;
importer java.io. OutputStream ;
importer java.io. FileInputStream ;
importer java.io. FileOutputStream ; - Créez un nouveau fichier appelé "Copy-File-1.txt", dans le même dossier que votre fichier SimpleScript.java. Ajoutez tout contenu écrit dans le fichier.
- Dans le même dossier, créez également un nouveau répertoire nommé "Destination". Le but est de copier le fichier "Copy-File-1.txt" dans le nouveau dossier.
- Dans la fonction principale de la classe, utilisez la classe File pour créer deux nouveaux objets de fichier. La source, qui sera le fichier que vous souhaitez copier, et la destination, qui sera l'endroit où vous souhaitez copier le fichier. Si le fichier de destination n'existe pas, votre programme en créera un nouveau.
classerSimpleScript{
Publiquestatiqueannulerprincipale(arguments de chaîne [])jette IOException {
// 1ère façon de copier un fichier
Origine du fichier = Nouveau Fichier("Copier-Fichier-1.SMS");
Destinataire du fichier = Nouveau Fichier("Destination/Copier-Fichier-1.SMS");
}
} - Après cela, créez un objet InputStream et OutputStream.
Entrée InputStream = nul;
Sortie OutputStream = nul; - Utilisez le flux d'entrée pour lire les données en octets et le flux de sortie pour écrire les données au nouvel emplacement.
essayer {
// Créer des objets FileInputStream et FileOutputStream
entrée = Nouveau FileInputStream (source);
sortie = Nouveau FileOutputStream (destination) ;
octet[] buf = Nouveauoctet[1024];
entier octetsLus ;// Écrit des octets dans la destination
tandis que ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, octetsLus);
}
} attraper (IOException e) {
e.printStackTrace();
System.out.println("Impossible de copier le fichier vers la destination: " + destination.getPath() + ". Vérifier si le dossier ou le fichier existe déjà.");
} finalement {
// Ferme les flux
si (entrée != nul) {
input.close();
}si (sortie != nul) {
sortie.close();
}
}System.out.println("Fichier copié");
- Pour exécuter le script, ouvrez une ligne de commande. Accédez au dossier dans lequel vous avez stocké votre fichier Java à l'aide de la commande cd sur le Invite de commandes Windows ou le terminal Mac.
CD Bureau
- Pour compiler le script, enregistrez le fichier Java et exécutez le Javac commande dans la ligne de commande :
javac SimpleScript.java
- Pour exécuter le script, utilisez le Java commande:
Vous devriez voir une seule ligne de sortie sans erreur :java SimpleScript
- Accédez à votre dossier "Destination" pour afficher votre fichier copié.
- Ouvrez le fichier pour afficher le contenu que votre programme a copié à partir du fichier d'origine.
Comment copier des fichiers à l'aide de Files.copy
Si vous utilisez Java 7 ou version ultérieure, vous pouvez utiliser la méthode Files.copy. Cette méthode est généralement une mise en œuvre plus simple. Selon le DocumentationJava, il existe plusieurs surcharges pour la fonction.
Par exemple, la méthode Files.copy peut également utiliser un flux d'entrée pour copier des fichiers d'un emplacement à un autre, mais via une méthode utilisant moins de code. Vous pouvez également utiliser Paths ou spécifier vous-même comment vous souhaitez que la méthode copie votre fichier.
- Créez un nouveau fichier appelé "Copy-File-2.txt", dans le même dossier que votre fichier SimpleScript.java. Ajoutez tout contenu écrit dans le fichier.
- En haut du fichier, ajoutez des importations pour le fichier "java.nio.file. Chemins" et "java.nio.file. Classes "fichiers".
importer java.nio.file. Chemins ;
importer java.nio.file. Des dossiers; - Ajoutez deux chaînes, représentant le chemin de fichier relatif pour le fichier source et la destination. Utilisez la méthode Files.copy, qui gérera déjà la logique pour copier le fichier vers la destination.
String copySource = "Copier-Fichier-2.SMS";
String copyDestination = "Destination/Copier-Fichier-2.SMS";essayer {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} attraper (Exception e) {
System.out.println("Impossible de copier le fichier vers la destination: " + copyDestination + ". Vérifier si le dossier ou le fichier existe déjà.");
}
System.out.println("2nd Fichier copié" ); - Exécutez le script à l'aide des commandes Javac et Java.
- Accédez à votre dossier "Destination" pour afficher votre fichier copié.
Comment copier des fichiers à l'aide de FileChannel.transferTo()
Selon le DocumentationJava, cette méthode peut être un moyen potentiellement plus rapide de copier des fichiers. Cependant, cela dépendra de la façon dont vous implémentez la fonction.
- Créez un nouveau fichier appelé "Copy-File-3.txt", dans le même dossier que votre fichier SimpleScript.java. Ajoutez un exemple de contenu à ce fichier.
- En haut de SimpleScript.java, importez le fichier "java.nio.channels. FileChannel" aux côtés de trois des précédentes classes communes liées aux fichiers du package io.
importer java.io. Dossier;
importer java.io. FileInputStream ;
importer java.io. FileOutputStream ;
importer java.nio.channels. CanalFichier ; - Créez des objets de fichier pour la source et la destination, et utilisez-les pour créer un flux d'entrée et un flux de sortie.
Fichier src = Nouveau Fichier("Copier-Fichier-3.SMS");
Fichier dst = Nouveau Fichier("Destination/Copier-Fichier-3.SMS");
FileInputStream inStream = Nouveau FileInputStream (src);
FileOutputStream outStream = Nouveau FileOutputStream (dst); - Utilisez la méthode TransferTo de la classe FileChannel pour copier le fichier vers sa destination.
essayer {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} attraper (Exception e) {
System.out.println("Impossible de copier le fichier vers la destination: " + dst.getPath() + ". Vérifier si le dossier ou le fichier existe déjà.");
} finalement {
// Ferme les flux
inStream.close();
flux sortant.close();
}
System.out.println("3rd Fichier copié" ); - Exécutez le script à l'aide des commandes Javac et Java.
- Accédez à votre dossier "Destination" pour afficher votre fichier copié.
Copier des fichiers en Java n'est que le début
Il existe de nombreuses façons de copier un fichier en Java. Trois méthodes possibles incluent l'utilisation de la méthode de flux traditionnelle, la méthode Files.copy ou la méthode transferTo.
Il existe de nombreuses autres opérations de gestionnaire de fichiers que vous pouvez effectuer à l'aide de Java. Certains d'entre eux incluent le déplacement de fichiers, la suppression de fichiers ou la compression de fichiers. Ceux-ci peuvent être utiles pour savoir si vous avez besoin d'automatiser certains processus dans le gestionnaire de fichiers.