Probleme de lecture de fichier

Fermé
louisard2 Messages postés 7 Date d'inscription mercredi 26 août 2015 Statut Membre Dernière intervention 19 décembre 2021 - Modifié par KX le 22/10/2015 à 07:44
Bonsoir

mon code a un comportement incompréhensible, il doit lire des fichier à la suite, et vu que j'ai 5 répertoires différents a lire, j'aimerais qu'il finisse avec un répertoire et enchaîne sur le 2eme, lorsque qu'il ne lit qu'1 fichier, tout se passe a merveille, mais le problème apparaît lorsque je fais une boucle afin de changer la variable qui permet de changer de répertoire, à ce moment là, pour tous les autres répertoires il les lit en sautant 2 méthodes, et je ne comprend pas pourquoi.
Ci joint le code, Merci de m'aider à comprendre la raison de ce fonctionnement

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Calendar;
import javax.swing.JOptionPane;

public class TestLecture2 {
 public static Chemin chem = new Chemin();
 static Path chemin = null;
 static Path chemin1 = null;
 static Path chemin2 = null;
 static Path chemin3 = null;
 static String titre = null;
 static int numFich = 1;
 static int refLigne = 0;
 @SuppressWarnings("null")

 public static void main(String[] args) {

  for (int i = 0; i < 5; i++) {
   lecture();
   numFich++;
   System.out.println("\ntest");
  }
 }
 public static void lecture() {
  switch (numFich) {
  case 1:
   choixChemin();
   lectureTotale(chemin, chemin1, chemin2, chemin3);
   break;
  case 2:
   choixChemin();
   lectureTotale(chemin, chemin1, chemin2, chemin3);break;
  case 3:
   choixChemin();
   lectureTotale(chemin, chemin1, chemin2, chemin3);
   break;
  case 4:
  choixChemin();
   lectureTotale(chemin, chemin1, chemin2, chemin3);
   break;
  case 5:
   choixChemin();
   lectureTotale(chemin, chemin1, chemin2, chemin3);
   break;
  default:
   break;
  }
 }
 public static void choixChemin() {
  switch (numFich) {
  case 1:
   chemin = Chemin.path_MangaA_E;
   chemin1 = Chemin.GenreA_E;
   chemin2 = Chemin.ScansA_E;
   chemin3 = Chemin.SynopsieA_E;
   break;
  case 2:
   chemin = Chemin.path_MangaF_J;
   chemin1 = Chemin.GenreF_J;
   chemin2 = Chemin.ScansF_J;
   chemin3 = Chemin.SynopsieF_J;
   break;
  case 3:
   chemin = Chemin.path_MangaK_O;
   chemin1 = Chemin.GenreK_O;
   chemin2 = Chemin.ScansK_O;
   chemin3 = Chemin.SynopsieK_O;
   break;
  case 4:
   chemin = Chemin.path_MangaP_T;
   chemin1 = Chemin.GenreP_T;
  chemin2 = Chemin.ScansP_T;
   chemin3 = Chemin.SynopsieP_T;
   break;
  case 5:
   chemin = Chemin.path_MangaU_Z;
   chemin1 = Chemin.GenreU_Z;
   chemin2 = Chemin.ScansU_Z;
   chemin3 = Chemin.SynopsieU_Z;
   break;
  default:
   break;
  }
 }
 static private String lectureTotale(Path fichierTitre, Path fichierGenre,
   Path fichierScan, Path fichierSynopsie) {
  int i = 0;
  String line;
  String[] result = null;
  String nom1[] = new String[nbrLigneFichier(fichierTitre)];
  try (InputStream in1 = Files.newInputStream(fichierTitre);
    BufferedReader reader1 = new BufferedReader(
      new InputStreamReader(in1))) {
   while ((line = reader1.readLine()) != null) {
    nom1[i] = line;
    result = line.split(";");
    for (int x = 0; x < result.length; x++) {
     titre = result[1];
    }
    refLigne++;
    Path chemSynopsie = Paths.get(fichierSynopsie + "/" + titre+ ".txt");
    System.out.println(nom1[i]);
    lectGenre(refLigne, fichierGenre, nbrLigneFichier(fichierGenre));
    lectScan(refLigne, fichierScan, nbrLigneFichier(fichierScan));
    lectSynopsie(chemSynopsie, nbrLigneFichier(chemSynopsie));
    System.out.println("\n");
   }
   reader1.close();
  } catch (IOException x) {
   System.out.println(x + "\n\n");
  }
  return null;
 }

 static private int nbrLigneFichier(Path path) {
  int ligne = 0;
  try (InputStream in = Files.newInputStream(path);
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(in))) {
   while ((reader.readLine()) != null) {
    ligne++;
   }
  reader.close();
  } catch (IOException x) {
  }
  return ligne;
 }
 static private String lectGenre(int numLigneALire, Path path,
   int nbrLigneDuFichier) {
  String genre = null;
  String line = null;
  String nom[] = new String[nbrLigneDuFichier];
  int i = 0;
  int ligne = 0;
  try (InputStream in = Files.newInputStream(path);
   BufferedReader reader1 = new BufferedReader(
      new InputStreamReader(in))) {
   while ((line = reader1.readLine()) != null) {
    nom[i] = line;
    ligne++;
    if (ligne == numLigneALire)
     System.out.println(nom[i]);
   }
   reader1.close();
  } catch (IOException x) {
  System.out.println(x + "\n\n");
  }
  return genre;
 }
 static private String lectScan(int numLigneALire, Path path,
   int nbrLigneDuFichier) {
  String line = null;
  String nom[] = new String[nbrLigneDuFichier];
  int i = 0;
  int ligne = 0;
  try (InputStream in = Files.newInputStream(path);
    BufferedReader reader1 = new BufferedReader(
      new InputStreamReader(in))) {
   while ((line = reader1.readLine()) != null) {
    nom[i] = line;
    ligne++;
    if (ligne == numLigneALire)
    System.out.println(nom[i]);
   }
   reader1.close();
  } catch (IOException x) {
   System.out.println(x + "\n\n");
  }
  return null;
 }
 static private String lectSynopsie(Path path, int nbrLigneDuFichier) {
  String line = null;
  String nom[] = new String[nbrLigneDuFichier];
  int i = 0;
  try (InputStream in = Files.newInputStream(path);
    BufferedReader reader1 = new BufferedReader(
      new InputStreamReader(in))) {
   while ((line = reader1.readLine()) != null) {
    nom[i] = line;
   System.out.println(nom[i]);
   }
   reader1.close();
  } catch (IOException x) {
   System.out.println(x + "\n\n");
  }
  return null;
 }
}
A voir également: