Dépôt du be graphe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Openfile.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package org.insa.base ;
  2. import java.io.* ;
  3. import java.util.zip.* ;
  4. /* Ne lisez pas cette classe. Lancez javadoc et lisez la doc generee plutot. */
  5. /**
  6. * La classe Openfile permet de lire les fichiers contenant les cartes :
  7. * <ul>
  8. * <li> en trouvant le bon dossier parmi les dossiers pre-configures </li>
  9. * <li> en dezippant automatiquement si besoin </li>
  10. * </ul>
  11. *
  12. */
  13. public class Openfile {
  14. // Le programme examine chaque dossier dans l'ordre jusqu'a trouver celui qui contient la carte voulue
  15. private static final String[] datadirs =
  16. { // NE MODIFIEZ PAS CELUI-CI
  17. // car il permet de tester en etant a l'INSA.
  18. "/home/commetud/3eme Annee MIC/Graphes-et-Algorithmes/Maps",
  19. // Celui-ci pour les chemins
  20. "/home/commetud/3eme Annee MIC/Graphes-et-Algorithmes/",
  21. // On cherche aussi dans le sous-repertoire local "Maps" (s'il existe)
  22. "Maps",
  23. // et dans le repertoire courant (Unix uniquement)
  24. ".",
  25. // Si vous utilisez votre propre dossier pour les donnees, mettez-le ici.
  26. "/home/votrepropredossier/a/vous",
  27. } ;
  28. // Extension testees. Garder l'extension vide dans la liste.
  29. private static final String[] extensions = { ".map", ".gz", ".map.gz", ".path", ".path.gz", "" } ;
  30. /**
  31. * Ouvre le fichier indiqué et renvoie un DataInputStream sur ce fichier.
  32. * Le fichier ne sera pas ferme avant la fin de l'application.
  33. * @param filename Nom du fichier a ouvrir (sans chemin)
  34. */
  35. public static DataInputStream open (String filename) {
  36. if (!filename.equals (new File(filename).getName())) {
  37. System.out.println("Le nom du fichier ne doit pas contenir un chemin (ni absolu, ni relatif).") ;
  38. System.out.println("Il doit juste contenir le nom du fichier contenant la carte.") ;
  39. System.out.println("Si vous voulez utiliser un dossier specifique, configurez base/Openfile.java") ;
  40. System.exit(1) ;
  41. }
  42. boolean trouve = false ;
  43. InputStream fileinput = null ;
  44. String fname = null ;
  45. String fullpath = null ;
  46. for (int extn = 0 ; !trouve && extn < extensions.length ; extn++) {
  47. fname = filename + extensions[extn] ;
  48. for (int index = 0 ; !trouve && index < datadirs.length ; index++) {
  49. fullpath = datadirs[index] + File.separator + fname ;
  50. File file = new File(fullpath) ;
  51. if (file.canRead()) {
  52. trouve = true ;
  53. try {
  54. fileinput = new FileInputStream(file) ;
  55. } catch (IOException e) {
  56. e.printStackTrace() ;
  57. System.exit(1) ;
  58. }
  59. }
  60. }
  61. }
  62. if (!trouve) {
  63. // Pas trouve
  64. System.out.println("Impossible de trouver le fichier " + filename) ;
  65. System.out.println(" pourtant j'ai cherche dans les dossiers : ") ;
  66. int existepas = 0 ;
  67. for (int i = 0 ; i < datadirs.length ; i++) {
  68. System.out.println(" - " + datadirs[i]) ;
  69. if (!new File(datadirs[i]).isDirectory()) {
  70. switch (existepas) {
  71. case 0: System.out.println(" (Ce dossier n'existe pas d'ailleurs)") ; break;
  72. case 1: System.out.println(" (Ce dossier n'existe pas non plus)") ; break;
  73. default: System.out.println(" (Celui-la non plus)") ; break;
  74. }
  75. existepas++ ;
  76. }
  77. System.out.println() ;
  78. }
  79. System.exit(1) ;
  80. }
  81. System.out.println("Fichier utilisee : " + fullpath) ;
  82. System.out.println() ;
  83. if (fname.endsWith(".gz")) {
  84. // The file is gzipped.
  85. try {
  86. fileinput = new GZIPInputStream(fileinput) ;
  87. } catch (IOException e) {
  88. e.printStackTrace() ;
  89. System.exit(1) ;
  90. }
  91. }
  92. else {
  93. fileinput = new BufferedInputStream(fileinput) ;
  94. }
  95. return new DataInputStream(fileinput) ;
  96. }
  97. }