PY01A0080
Messages postés24Date d'inscriptionmardi 21 novembre 2006StatutMembreDernière intervention15 mars 2011
-
9 janv. 2011 à 00:40
kadi -
10 févr. 2014 à 05:45
Bonjour à tous,
je suis débutant en java et je recherche un code pour lire le contenu de tous les fichiers .txt présents dans un répetoire puis de copier le contenu de tous les fichiers sur un seul fichier.
D'après mes recherches, j'arrive à lire des fichiers qui sont présents dans un répertoire puis copier leur contenu dans un autre fichier. Mais je suis obligé de spécifier le nom des fichiers à chaque fois.
Comment faire pour éviter de spécifier le nom des fichiers, il doit y avoir une fonction qui permet de lire tous les fichier à l'extension txt et de copier sur un autre fichier.
voici mon code trouvé avec Google mais je crois que c'est une manière pas très élégante car je l'ai modifié un peu.
import java.io.*;
class FileStreamsTest {
public static void main(String[] args) {
try {
File inputFile = new File("Text1.txt");
File inputFile2 = new File("Text2.txt");
File inputFile3 = new File("Text3.txt");
File outputFile = new File("TextOutput.txt");
FileInputStream fis = new FileInputStream(inputFile);
FileInputStream fis2 = new FileInputStream(inputFile2);
FileInputStream fis3 = new FileInputStream(inputFile3);
FileOutputStream fos = new FileOutputStream(outputFile);
int c;
int b;
int a;
while ((c = fis.read()) != -1)
{
fos.write(c);
}
while ((b = fis2.read()) !=-1)
{ fos.write(b);
}
while ((a = fis3.read()) !=-1)
{
fos.write(a);
}
fis.close();
fis2.close();
fis3.close();
fos.close();
} catch (FileNotFoundException e) {
System.err.println("FileStreamsTest: " + e);
} catch (IOException e) {
System.err.println("FileStreamsTest: " + e);
}
}
}
Merci à tous
A voir également:
Récupérer tous les noms de fichiers d'un dossier python
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 201120 12 janv. 2011 à 01:01
Salut,
Pour retrouver la liste des fichiers .txt d'un répertoire (en considérant la possibilité qu'il y ait des sous répertoires), tu peux utiliser la méthode listFiles() de l'objet java File qui va lister les différents fichiers contenus dans un répertoire.
Cette méthode peut prendre en paramètre un FileFilter pour filter la liste retournée.
Dans ton cas, ce FileFilter va retourner true seulement si le nom du fichier se termine par .txt
Voici un example de méthode récursive qui prend en paramètre le nom du répertoire pour lequel la liste est souhaitée, un object Collection pour stocker les fichiers, et l'extension de fichier.
//Methode qui permet de parser un repertoire et de retrouver ses fichiers
private static void findFilesRecursively(File file, Collection<File> all, final String extension) {
//Liste des fichiers correspondant a l'extension souhaitee
final File[] children = file.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.getName().endsWith(extension) ;
}}
);
if (children != null) {
//Pour chaque fichier recupere, on appelle a nouveau la methode
for (File child : children) {
all.add(child);
findFilesRecursively(child, all, extension);
}
}
}
Et dans la méthode main, tout simplement une loop sur les fichiers récupérés, ce qui allège le code (a remplacer le nom du répertoire dans lequel se situent les fichiers textes bien sur) :
public static void main(String[] args) {
try {
final Collection<File> all = new ArrayList<File>();
findFilesRecursively(new File("C:\\repertoire"), all, ".txt");
File outputFile = new File("TextOutput.txt");
FileOutputStream fos = new FileOutputStream(outputFile);
for (File file : all) {
System.out.println(file.getName());
FileInputStream fis = new FileInputStream(file);
int a;
while ((a = fis.read()) != -1) {
fos.write(a);
}
fis.close();
}
fos.close();
} catch (FileNotFoundException e) {
System.err.println("FileStreamsTest: " + e);
} catch (IOException e) {
System.err.println("FileStreamsTest: " + e);
}
}
Si jamais le code n'est pas clair, n'hésite pas à demander des clarifications :)
10 févr. 2014 à 05:45
il m'affiche une erreur eu niveau de "collection"
que ce que je doit faire ?
MERCI