lecture d'un fichier java .nio - Java - Programmation
Marsh Posté le 05-04-2013 à 10:09:32
bloomingdals a écrit : bonjour tout le monde, le code suivant permet de lire un fichier et d'écrire son contenu dans un autre (j'utilise des fichier .nio au lieu de .io car la taille de mes fichiers est énorme). le problème est que le fichier en entrée (celui qui est entrain d'être lu) est parallèlement rempli par un autre programme java qui met beacoup de temps pour le faire. je voudrai donc récupérer a chaque fois 1000 lignes de ce fichier, les mettre dans un autre fichier pour des fins de traitement puis ajouter un autre 1000 lignes et ainsi de suites jusqu'à ce que la taille du fichier de départ soit atteinte. voici le bout de code public static void main(String[] args) { try for (String line : lines1) est ce que vous pouvez m'aidez |
edit : pour que ton code soit plus lisible utilises les balises code :
Code :
|
1) Ton premier try...catch IOException doit se faire uniquement sur readAllLines.
2) Ajouter un entier indexDeFichier
3) Inclure une sous-fonction qui serait l'équivalent de ton deuxième try...catch
4) Ton for devrait inclure un compteur nbLignes à incrémenter à chaque ligne lue aussi
5) Remplir le tableau et avec ce compteur nbLignes une fois rendu à mille appeller la sous fonction avec les paramètres qui vont bien et si pas d'erreur mettre lines à vide et nbLignes à 0, si erreur la traiter
6) Une fois ton for fini si le tableau lines est non vide rappeler la sous fonction
Pour 4,5,6 : on peut passer par un while aussi.
7) Ne pas oublier la gestion d'exception au niveau de la sous-fonction et voir comment gérer le retour de la sous-fonction dans ces cas dans le Main.
Marsh Posté le 02-04-2013 à 17:36:48
bonjour tout le monde,
le code suivant permet de lire un fichier et d'écrire son contenu dans un autre (j'utilise des fichier .nio au lieu de .io car la taille de mes fichiers est énorme).
le problème est que le fichier en entrée (celui qui est entrain d'être lu) est parallèlement rempli par un autre programme java qui met beacoup de temps pour le faire. je voudrai donc récupérer a chaque fois 1000 lignes de ce fichier, les mettre dans un autre fichier pour des fins de traitement puis ajouter un autre 1000 lignes et ainsi de suites jusqu'à ce que la taille du fichier de départ soit atteinte.
voici le bout de code
public static void main(String[] args) {
Path ecrire_ici= Paths.get("/root/Desktop/prefixtest" );
Path llire_ici= Paths.get("/root/Desktop/split" );
Charset charset = Charset.forName("UTF-8" );
List<String> lines = new ArrayList<>();
try
{
List<String> lines1 = Files.readAllLines(lire_ici, charset);
for (String line : lines1)
{
lines.add(line);
}
}
catch (IOException e)
{
System.out.println(e);
}
try
{
Files.write(ecrire_ici, lines, charset, StandardOpenOption.APPEND);
}
catch (IOException e)
{
}
}
est ce que vous pouvez m'aidez
merci