Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to solve the java.nio.file.NoSuchFileException?

Tags:

java

file

I have a file called "result.csv", from that file i want to read certain data and display them. I have that file in my eclipse project folder itself. Still i'm unable to read the file.

 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(); 
    } 
}

OUTPUT:

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)

Can anyone point where exactly i missed? and how can i overcome this or any alternate methods for this method?

like image 446
Snkini Avatar asked Jan 03 '18 11:01

Snkini


People also ask

What is NoSuchFileException?

Class NoSuchFileExceptionChecked exception thrown when an attempt is made to access a file that does not exist.

What is Java NIO files?

Java NIO package provide one more utility API named as Files which is basically used for manipulating files and directories using its static methods which mostly works on Path object.

What does paths get do in Java?

get. Converts a path string, or a sequence of strings that when joined form a path string, to a Path . If more does not specify any elements then the value of the first parameter is the path string to convert.


2 Answers

The problem is that your default directory at application startup is not what you think it is. Try adding the following line to your code, just after you create the path:

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

That way, you'll see exactly where it is looking for the file.

How to fix it is your decision. You can use a full path spec instead of just a filename, or put the filename in a special "Resources" directory and reference it using a relative path, or move the file to wherever your default directory is.

like image 105
DodgyCodeException Avatar answered Oct 13 '22 01:10

DodgyCodeException


If your file("result.csv") in the src directory, you should use the "src/result.csv" instead of "result.csv".

like image 42
何明扬 Avatar answered Oct 12 '22 23:10

何明扬