Partage
  • Partager sur Facebook
  • Partager sur Twitter

fichier .txt pas trouvé dans mon archive

Sujet résolu
    8 janvier 2024 à 23:27:17

    Bonsoir, pour la fac j'ai dû programmer un Uno en java sur Intellij, le voilà fini et fonctionnel mais voilà qu'en executant l'archive il ne trouve pas mon PaquetEntier.txt :ouch:
    https://www.noelshack.com/2024-02-1-1704752379-intellij.png
    Voilà mon arborescence, quand je l'exécute sur IntelliJ ça ne pose aucun problème, ça c'est la ligne qui récupère le chemin absolu de mon ficher :
    String cheminAbsolu =System.getProperty("user.dir") +"/src/uno/res/PaquetEntier.txt";

    J'ai déjà essayé trop de chose je suis à cours d'idées :( s'il vous plaît aidez moi
    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2024 à 9:30:07

      user.dir ce sont les dossiers utilisateur, users/xxx sous Windows, /home/xxx sous linux

      Pour un comportement similaire depuis le disque ou dans un jar, tu peux utiliser getResource

      https://www.baeldung.com/java-class-vs-classloader-getresource

      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2024 à 11:58:18

        Il faut aussi s'assurer que le fichier est bien présent dans l'archive.

        Exemple : répertoire de projet (Netbeans 20)

        $ tree Foo/
        Foo/
        ├── build.xml
        ├── manifest.mf
        ├── nbproject
        │   ├── build-impl.xml
        │   ├── genfiles.properties
        │   ├── private
        │   │   ├── private.properties
        │   │   └── private.xml
        │   ├── project.properties
        │   └── project.xml
        ├── src
        │   └── foo
        │       ├── Foo.java
        │       └── res
        │           └── hello.txt
        └── test
        
        7 directories, 10 files
        

        Après compilation et génération du jar, on a en plus

        ├── dist
        │   ├── Foo.jar
        │   └── README.TXT
        

        L'archive jar contient la classe + la ressource (le fichier hello.txt)

        $ jar tf Foo/dist/Foo.jar 
        META-INF/
        META-INF/MANIFEST.MF
        foo/
        foo/res/
        foo/Foo.class
        foo/res/hello.txt
        

        La rôle de la classe Foo est de lire et afficher le contenu du fichier ressource





        package foo;
        
        import java.io.IOException;
        import java.io.InputStream;
        import java.util.Scanner;
        
        public class Foo {
        
            public static void main(String[] args) throws IOException {
        
                InputStream stream =  
                        Foo.class.getResourceAsStream("res/hello.txt");
                var scanner = new Scanner(stream);
                    while (scanner.hasNextLine()) {
                    System.out.println("-> " + scanner.nextLine());
                }
                System.out.println("Done");
            }
            
        }


        Ca marche quand on lance l'exécution depuis n'importe où (= /tmp)

        billaud@sims:/tmp$ java -jar ~/NetBeansProjects/Foo/dist/Foo.jar 
        -> Hello,
        -> World!
        Done
        



        -
        Edité par michelbillaud 10 janvier 2024 à 12:00:46

        • Partager sur Facebook
        • Partager sur Twitter

        fichier .txt pas trouvé dans mon archive

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown