Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lien relatif/absolu

    26 mai 2017 à 17:35:32

    Bonjour à tous,

    Je demande car je suis vraiment bloqué sur une importation de données et je ne sais plus quoi faire. Désolé si je ne suis pas dans le bon forum :/ .

    Je vous explique, j'ai un projet à faire afin d'afficher des graphiques/ statistiques à partir d'une bdd que je remplis grâce un dossier .csv . Je réalise ce projet sur eclipse en java.

    Voila déjà l'arborescence de mon projet j'explique mon problème après:

    • --Projet
    •     --src (source folder)
    •       --DAO (package)
    •       --Traitement (package)
    •       --traitement.classes (package)
    •          --csvReading
    •     --ressources (source folder)
    •       --Donnees.csv

    Voila alors mon fichier csv se trouve dans le source folder ressources. La classe chargée de lire ce csv et d'injecter les données dans la BDD est la classe csvReading situé dans traitement.classes.

    Voici le code que j'utilise pour extraire les données (ce code fonctionne à partir du moment ou je donne un lien absolu)

    		String csvFile = "/../../../ressources/Donnees.csv";
    		String line = "";
    		String cvsSplitBy = ";";
    		Connection co = null;
    		Statement sttmt = null;
    
    		// On Supprime la Table précédente si elle existe
    		try {
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    			} catch (ClassNotFoundException e1) {
    				e1.printStackTrace();	 	
    			}
    			co = DriverManager.getConnection(DB_URL, USER, PASS);
    			sttmt = co.createStatement();
    			String sql = "DROP TABLE donnees";
    			sttmt.executeUpdate(sql);
    
    			// on recréer la table pour y mettre les nouvelles données
    			sttmt = co.createStatement();
    			String sql2 = "CREATE TABLE donnees "
    					+ "(id INTEGER AUTO_INCREMENT, " + " date VARCHAR(255), "
    					+ " heures VARCHAR(255), " + " consommation INTEGER, "
    					+ " fioul INTEGER, " + " charbon INTEGER, "
    					+ " gaz INTEGER, " + " nucleaire INTEGER, "
    					+ " eolien INTEGER, " + " solaire INTEGER, "
    					+ " hydraulique INTEGER, " + " pompage INTEGER, "
    					+ " bioenergies INTEGER, " + " PRIMARY KEY ( id ))";
    			sttmt.executeUpdate(sql2);
    
    			//on parcourt le fichier csv ligne par ligne et on injecte les donnees récupérée
    			try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
    				while ((line = br.readLine()) != null) {
    					String[] donnees = line.split(cvsSplitBy);
    					PreparedStatement pstmt = co.prepareStatement("INSERT INTO donnees VALUES(0,?,?,?,?,?,?,?,?,?,?,?,?)");
    


    Seulement le problème c'est que pour mettre sur server, je doit changer le lien du string csvFile que je donne afin qu'il soit un lien relatif, et la j'ai tout essayé, ../ , /../../, /../../../, meme a partir dufolder du projet, rien a faire impossible d'ouvrir ce csv, Serais-ce le fait que le .csv se trouve dans un autre source folder que la classe qui pose probleme? (sachant que dans ce sf j'ai aussi un .properties qui lui n'as aucun problème à s'ouvrir)

    Ou est-ce que c'est moi qui m'y prend mal pour le relatif? 

    Merci d'avance de votre aide!

    -
    Edité par Palencar 26 mai 2017 à 17:39:48

    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2017 à 2:58:39

      Salut,

      Premièrement JavaScript =/= Java mais pas du tout :)

      Ensuite je ne sais pas si c'est volontaire mais tes liens "relatifs" sont absolu en fait ^^' 

      si ton lien commence par "/" il est absolu donc cette ligne  "/../../../ressources/Donnees.csv" veut dire 

      - va a la racine /

      - va sur le parent de la racine -> a la racine "/"

      - va sur le parent de la racine -> a la racine "/"

      - va sur le parent de la racine -> a la racine "/"

      - va dans le répertoire "ressources" situé dans "/" donc "/ressources"

      -prend le fichier "donnees.csv" dans le rép. "/ressources" donc "/ressources/donnees.csv" 

      en java tu peux avoir le répertoire courant de l'application en faisant System.getProperty("user.dir")

      en espérant t'avoir aidé.

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous ne réussissez pas du premier coup, appelez ça « version 1.0 ».

      Problème lien relatif/absolu

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown