web-dev-qa-db-fra.com

Comment résoudre l'exception Java.nio.file.NoSuchFileException?

J'ai un fichier appelé "result.csv", à partir de ce fichier, je veux lire certaines données et les afficher. J'ai ce fichier dans mon dossier de projet Eclipse lui-même. Je ne parviens toujours pas à lire le fichier.

 public static void main(String [] args) {
    int i=0;
    String filename="result.csv";
    Path pathToFile = Paths.get(filename);

    try (BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.US_ASCII)) { 
        // read the first line from the text file 
        String line = br.readLine(); 
        // loop until all lines are read 
        while (i<10) { 
            // use string.split to load a string array with the values from 
            // each line of 
            // the file, using a comma as the delimiter
            String[] attributes = line.split(","); 
            double x=Double.parseDouble(attributes[8]);
            double y=Double.parseDouble(attributes[9]);
            System.out.println(GeoHash.withCharacterPrecision(x, y, 10));


            // read next line before looping 
            // if end of file reached, line would be null 
            line = br.readLine(); 
            i++;
        } 
    } catch (IOException ioe) { 
            ioe.printStackTrace(); 
    } 
}

SORTIE:

Java.nio.file.NoSuchFileException: result.csv
at Sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at Sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at Sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at Sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at Java.nio.file.Files.newByteChannel(Unknown Source)
at Java.nio.file.Files.newByteChannel(Unknown Source)
at Java.nio.file.spi.FileSystemProvider.newInputStream(Unknown Source)
at Java.nio.file.Files.newInputStream(Unknown Source)
at Java.nio.file.Files.newBufferedReader(Unknown Source)
at com.uvce.cse.searchiot.geohash.TestGeoHash.main(TestGeoHash.Java:19)

Quelqu'un peut-il indiquer où j'ai manqué exactement? et comment puis-je surmonter cette méthode ou toute autre méthode pour cette méthode?

6
Snkini

Le problème est que votre répertoire par défaut au démarrage de l'application n'est pas ce que vous pensez qu'il est. Essayez d'ajouter la ligne suivante à votre code, juste après avoir créé le chemin:

public static void main(String [] args) {
    int i=0;
    String filename="result.csv";
    Path pathToFile = Paths.get(filename);
    System.out.println(pathToFile.toAbsolutePath());

De cette façon, vous verrez exactement où il recherche le fichier.

Comment y remédier est votre décision. Vous pouvez utiliser une spécification de chemin complet au lieu d'un simple nom de fichier, ou placer le nom de fichier dans un répertoire "Ressources" spécial et le référencer en utilisant un chemin relatif, ou déplacer le fichier vers l'emplacement de votre répertoire par défaut.

8
DodgyCodeException

Si votre file("result.csv") dans le répertoire src, vous devez utiliser "src/result.csv" au lieu de "result.csv".

4
何明扬

Si vous êtes un utilisateur de MacOSX, veuillez taper le chemin du fichier manuellement au lieu de le copier à partir de "Get Info". Vous obtiendrez quelque chose comme ça si vous le copiez à partir de "Get Info": / Users/username <200e> <2068> <2068>/Desktop <2069> /source.txt

0
Nimesh Bumb

Le problème est que Java ne parvient pas à trouver le fichier "result.csv" dans le dossier du projet. Essayez donc d'utiliser le chemin d'accès complet au fichier, par exemple C:\your_folder\project\result.csv Dans la variable Path. Je pense aussi qu'il serait préférable d'utiliser le tampon de lecture comme ceci: BufferedReader br = new BufferedReader(new FileReader(insert here the String in which is defined the path to the file)); Vérifiez les utilisations de BufferedReader ici

0
Alex Cuadrón