IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Import de fichier dans mon application


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 111
    Points : 44
    Points
    44
    Par défaut Import de fichier dans mon application
    Bonjour,
    je voudrais charger un fichier dans mon application pour l'exploiter , a priori la classe la plus adéquate est URL , mais quand je tape le chemin ca me génère une erreurs, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.net.URL pURL = new URL("file:C:\france.shapefiles\france_administrative.shp");
    quelqu'un a une idée ?
    merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    les \doivent etre doublé dans une string java, ce sont des caractères d'échappement.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    Bonjour tchize;
    merci pour votre réponse , ben j'ai essayé avec slash doublés et ca donne toujours la même erreurs "null pointer exception" même ligne

    voila ce que j'ai tapé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.net.URL pURL = new URL("file:C\\france.shapefiles\\france_administrative.shp");
    y'a t il une autre chose que j'aurais du faire ?
    merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    L'url n'a pas l'air très bonne, mais je comprend pas pourquoi tu as un Null pointeur ici, tu devrais plutôt avoir un MalformedURLException.

    Quoi qui l'en soit un ficher sur le disque C, c'est comme ça :

    file:\\C:\TEMP\tmp.html

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    +1 une url en erreur ne déclenche jamais un nullpointerexception. Afficher le code complet + erreur et mettre en évidence la ligne où pointe le stacktrace.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    je vous passe le code et le message d'erreure généré, voila ,
    j'ai essayé les deux combinaisons
    java.net.URL pURL = new URL("file:\\C:\\gadm_FRA_SHP\\FRA.shp");
    et java.net.URL pURL = new URL("file:C:\\gadm_FRA_SHP\\FRA.shp");
    je suis meme passé par new File ("....").toURI().toURL();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package projet1;
     
    import org.geotoolkit.data.query.QueryBuilder;
    import com.vividsolutions.jts.geom.Point;
    import java.awt.BorderLayout;
    import java.io.File;
    import java.net.URL;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import org.geotoolkit.data.DataStore;
    import org.geotoolkit.data.DataStoreFinder;
    import org.geotoolkit.data.FeatureCollection;
    import org.geotoolkit.factory.FactoryFinder;
    import org.geotoolkit.gui.swing.go2.JMap2D;
    import org.geotoolkit.gui.swing.go2.control.JNavigationBar;
    import org.geotoolkit.map.MapBuilder;
    import org.geotoolkit.map.MapLayer;
    import org.geotoolkit.referencing.crs.DefaultGeographicCRS;
    import org.geotoolkit.style.StyleConstants;
    import org.geotoolkit.util.RandomStyleFactory;
    import org.opengis.feature.type.Name;
    public class projet1 {
     
        /**
         * @param args the command line arguments
         */
     
        public static void main(String[] args)throws Exception {
     
            //pour creer des geometries, points, lignes, polygons ...
            final com.vividsolutions.jts.geom.GeometryFactory GF = new com.vividsolutions.jts.geom.GeometryFactory();
            final org.geotoolkit.style.MutableStyleFactory MSF = (org.geotoolkit.style.MutableStyleFactory)FactoryFinder.getStyleFactory(null) ;
     
     
            //on définit le modele de données
            final org.geotoolkit.feature.FeatureTypeBuilder ftb = new org.geotoolkit.feature.FeatureTypeBuilder();
            ftb.setName("MonModel");
     
            //un attribut de type Point avec projection cartographique CRS:84 (longtitude/latitude)
            ftb.add("geometry", Point.class, DefaultGeographicCRS.WGS84);
            ftb.setDefaultGeometry("geometry");
            final org.opengis.feature.simple.SimpleFeatureType type = ftb.buildSimpleFeatureType();
            maconnexion c = new maconnexion();
            String s = new String();
            s = "id";
             final org.geotoolkit.data.FeatureCollection collection = org.geotoolkit.data.DataUtilities.collection("id-col", type);
            while (c.rs.next())
            {
     
              //creation de quelques valeurs
              final org.geotoolkit.feature.simple.SimpleFeatureBuilder sfb = new org.geotoolkit.feature.simple.SimpleFeatureBuilder(type);
     
              sfb.set("geometry", GF.createPoint(new com.vividsolutions.jts.geom.Coordinate(c.rs.getInt(1),c.rs.getInt(2))));
              final org.opengis.feature.simple.SimpleFeature feature1 = sfb.buildFeature(s+"d");
     
                   //creation d'une collection de valeur
     
            collection.add(feature1);
            }
     
     
            //creation une couche de donnée pour affichage, données + style
            final org.geotoolkit.style.MutableStyle style = MSF.style(StyleConstants.DEFAULT_POINT_SYMBOLIZER);
            final org.geotoolkit.map.MapLayer featureLayer = MapBuilder.createFeatureLayer(collection, style);
     
            java.net.URL pURL = new URL("file:C:\\gadm_FRA_SHP\\FRA.shp");
            DataStore pDS = DataStoreFinder.getDataStore("key",pURL);
            Name pName = pDS.getNames().iterator().next();
            FeatureCollection pFC = pDS.createSession(true).getFeatureCollection(QueryBuilder.all(pName));
            MapLayer pLayer = MapBuilder.createFeatureLayer(pFC, RandomStyleFactory.createDefaultVectorStyle(pFC));
    //pMapCntx.layers().add(pLayer);
    //JMap2DFrame.show(pMapCntx);
     
     
     
            //ensemble des couches a afficher
            final org.geotoolkit.map.MapContext context = org.geotoolkit.map.MapBuilder.createContext();
     
            context.layers().add(featureLayer);
            context.layers().add(pLayer);
            //creation de la fenetre pour affichage
             final org.geotoolkit.gui.swing.go2.JMap2D map = new JMap2D();
            //map.setToolTipText("bonjour");
             map.getContainer().setContext(context);
            map.getCanvas().getController().setVisibleArea(context.getBounds());
            final JNavigationBar bar = new JNavigationBar(map);
            final JPanel panneau = new JPanel(new BorderLayout());
            panneau.add(BorderLayout.NORTH,bar);
            panneau.add(BorderLayout.CENTER,map);
     
            final JFrame frm = new JFrame();
            frm.setContentPane(panneau);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frm.setSize(800, 600);
            frm.setLocationRelativeTo(null);
            frm.setVisible(true);
     
     // context.layers().clear(); permet la suppression des layers
     //featureLayer.setSelectable(true);
      //      featureLayer.setVisible(true);
       //     context.layers().add(featureLayer);
    // Methods in org.geotoolkit.map with parameters of type LayerListener
     //void 	MapLayer.addLayerListener(LayerListener listener)
     
        }
    }
    sachant que mon URL est déclarée a la ligne 71 , voici le rapport d'erreur généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    run:
    Chargement du driver jdbc ds la JVM réussie
    Connexion réussite
    Exception in thread "main" java.lang.NullPointerException
            at projet1.projet1.main(projet1.java:73)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 1 second)
    merci

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je penses que l'URL est incorrecte.
    Déjà dans une URL on utilise des slash (/) et non pas des antislash (\).
    Ensuite dans le protocole file: il faut précisé un / initial, ce qui fait que cela devrait plutôt ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file:/C:/gadm_FRA_SHP/FRA.shp
    A noter qu'on peut passer par la classe File pour générer une URL valide

    a++

    [edit] En même temps il faudrait que tu testes tes variables pour voir ce qui provoque le NullPointer.
    De plus ta lecture de l'Iterator est incorrect car tu ne vérifie pas le hasNext()...

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ligne 72 et 73:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataStore pDS = DataStoreFinder.getDataStore("key",pURL);
    Name pName = pDS.getNames().iterator().next();
    alors au choix, soit tu n'a pas de datastore (pDS est null), soit le getNames() ne renvoie rien (null),

    Comme vous ne faites pas de vérification sur ces valeur, impossible d'en dire plus.

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    salut adiGuba,
    en fait j'ai essayé les salsh,anti-slash, double anti-slash ..... ca marche toujours pas , j'ai même tenté un new File.ToURI.toURL , ca génère toujours la même erreur

    @ tchize : oui je devrais mettre des try catch dans mon code,mais ca rend le code moins clair et je les maitrise pas en plus :p
    donc voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    /*
     
    package projet1;
     
    import org.geotoolkit.data.query.QueryBuilder;
    import com.vividsolutions.jts.geom.Point;
    import java.awt.BorderLayout;
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import org.geotoolkit.data.DataStore;
    import org.geotoolkit.data.DataStoreFinder;
    import org.geotoolkit.data.FeatureCollection;
    import org.geotoolkit.factory.FactoryFinder;
    import org.geotoolkit.gui.swing.go2.JMap2D;
    import org.geotoolkit.gui.swing.go2.control.JNavigationBar;
    import org.geotoolkit.map.MapBuilder;
    import org.geotoolkit.map.MapLayer;
    import org.geotoolkit.referencing.crs.DefaultGeographicCRS;
    import org.geotoolkit.storage.DataStoreException;
    import org.geotoolkit.style.StyleConstants;
    import org.geotoolkit.util.RandomStyleFactory;
    import org.opengis.feature.type.Name;
    public class projet1 {
     
        /**
         * @param args the command line arguments
         */
     
        public static void main(String[] args)throws Exception {
     
            //pour creer des geometries, points, lignes, polygons ...
            final com.vividsolutions.jts.geom.GeometryFactory GF = new com.vividsolutions.jts.geom.GeometryFactory();
            final org.geotoolkit.style.MutableStyleFactory MSF = (org.geotoolkit.style.MutableStyleFactory)FactoryFinder.getStyleFactory(null) ;
     
     
            //on définit le modele de données
            final org.geotoolkit.feature.FeatureTypeBuilder ftb = new org.geotoolkit.feature.FeatureTypeBuilder();
            ftb.setName("MonModel");
     
            //un attribut de type Point avec projection cartographique CRS:84 (longtitude/latitude)
            ftb.add("geometry", Point.class, DefaultGeographicCRS.WGS84);
            ftb.setDefaultGeometry("geometry");
            final org.opengis.feature.simple.SimpleFeatureType type = ftb.buildSimpleFeatureType();
            maconnexion c = new maconnexion();
            String s = new String();
            s = "id";
             final org.geotoolkit.data.FeatureCollection collection = org.geotoolkit.data.DataUtilities.collection("id-col", type);
            while (c.rs.next())
            {
     
              //creation de quelques valeurs
              final org.geotoolkit.feature.simple.SimpleFeatureBuilder sfb = new org.geotoolkit.feature.simple.SimpleFeatureBuilder(type);
     
              sfb.set("geometry", GF.createPoint(new com.vividsolutions.jts.geom.Coordinate(c.rs.getInt(1),c.rs.getInt(2))));
              final org.opengis.feature.simple.SimpleFeature feature1 = sfb.buildFeature(s+"d");
     
                   //creation d'une collection de valeur
     
            collection.add(feature1);
            }
     
     
            //creation une couche de donnée pour affichage, données + style
            final org.geotoolkit.style.MutableStyle style = MSF.style(StyleConstants.DEFAULT_POINT_SYMBOLIZER);
            final org.geotoolkit.map.MapLayer featureLayer = MapBuilder.createFeatureLayer(collection, style);
     
           try { java.net.URL pURL = new URL("file:/C:/gadm_FRA_SHP/FRA.shp");
                 DataStore pDS = DataStoreFinder.getDataStore("key",pURL);
                  Name pName = pDS.getNames().iterator().next();
                  FeatureCollection pFC = pDS.createSession(true).getFeatureCollection(QueryBuilder.all(pName));
                  MapLayer pLayer = MapBuilder.createFeatureLayer(pFC, RandomStyleFactory.createDefaultVectorStyle(pFC));
                   //ensemble des couches a afficher
            final org.geotoolkit.map.MapContext context = org.geotoolkit.map.MapBuilder.createContext();
     
            context.layers().add(featureLayer);
            context.layers().add(pLayer);
            //creation de la fenetre pour affichage
             final org.geotoolkit.gui.swing.go2.JMap2D map = new JMap2D();
            //map.setToolTipText("bonjour");
             map.getContainer().setContext(context);
            map.getCanvas().getController().setVisibleArea(context.getBounds());
            final JNavigationBar bar = new JNavigationBar(map);
            final JPanel panneau = new JPanel(new BorderLayout());
            panneau.add(BorderLayout.NORTH,bar);
            panneau.add(BorderLayout.CENTER,map);
     
            final JFrame frm = new JFrame();
            frm.setContentPane(panneau);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frm.setSize(800, 600);
            frm.setLocationRelativeTo(null);
            frm.setVisible(true);
           }
            catch (DataStoreException e) {System.out.println("au niveau du datstore");}
            catch (MalformedURLException e) {System.out.println("mauvaise URL");}
            catch (NullPointerException e) {System.out.println("on n'a pas sur quoi pointer ");}
            catch (IOException e){System.out.print("no suitable loader");}
     
     
     
     
     
     
     
     
     
     
    //pMapCntx.layers().add(pLayer);
    //JMap2DFrame.show(pMapCntx);
     
     
     
     
     
     // context.layers().clear(); permet la suppression des layers
     //featureLayer.setSelectable(true);
      //      featureLayer.setVisible(true);
       //     context.layers().add(featureLayer);
    // Methods in org.geotoolkit.map with parameters of type LayerListener
     //void 	MapLayer.addLayerListener(LayerListener listener)
     
     
    }}
    ca me génère "on n'a pas sur quoi pointer"
    ca serait gentil de me dire quelle exception je dois indiquer pour un datastore vide car dans la classe source y'en a pas ,
    merci

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    qui parle de try catch, je vous dit de chechker que les valeur que vous recevez ne sont pas null avant de tenter de les utiliser. vous ne testez pas les conditions qu'on vous a demandé de tester. Quand vous saurez ou ca foire, vous pourrez commencer à chercher comment corriger.

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    oki je comprends

    la valeur que je recois est nulle en effet tchize, (bon je sais ou ca foire) sinon le pourquoi , j'en sais rien


    pourtant l'url semble bonne

Discussions similaires

  1. Ouvrir un fichier dans mon application Eclipse RCP
    Par romain31770 dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 29/04/2011, 13h19
  2. Récupérer un fichier dans mon application
    Par 1rageux dans le forum Android
    Réponses: 7
    Dernier message: 19/12/2009, 17h42
  3. Comment importer un jar dans mon application ?
    Par verbose dans le forum Général Java
    Réponses: 11
    Dernier message: 16/04/2008, 15h27
  4. importation d'un fonction d'une dll dans mon application
    Par jeannot27 dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/07/2005, 15h35
  5. Réponses: 7
    Dernier message: 26/06/2003, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo