NoSuchFileException occurred when trying to attempt access a file or directory which is not exist in given location.
NoSuchFileException is sub class of FileSystemException. This exception introduced in Java 7.
Example for NoSuchFileException
This example is throwing NoSuchFileException because trying to access a file student_data.json which is not exist on default location.
package com.fiot.json.jackson; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fiot.json.jackson.pojo.Student; public class ConvertJsonToArrayList { public static void main(String[] args) { try { byte[] mapData = Files.readAllBytes(Paths.get("student_data.json")); Student[] studentArr = null; ObjectMapper objectMapper = new ObjectMapper(); studentArr = objectMapper.readValue(mapData, Student[].class); List studentList=Arrays.asList(studentArr); System.out.println("Student 1 \n"+studentList.get(0)); System.out.println("Student 2 \n"+studentList.get(1)); } catch(JsonMappingException ex) { ex.printStackTrace(); } catch(IOException ex) { ex.printStackTrace(); } } }
Exception Stacktrace
java.nio.file.NoSuchFileException: student_data.json
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.Files.readAllBytes(Unknown Source)
at com.fiot.json.jackson.ConvertJsonToArrayList.main(ConvertJsonToArrayList.java:18)
Solutions
There are couple of solutions to handle such situations:
- Use fully qualified file path such as “C:/data/student_data.json” but that will help only when your program is going to run on local machine. While working with enterprise application always use relative paths.
- If your file in source directory use path as “src/student_data.json”
- If your project is maven project, always write script to copy file which you want to access or keep in resource folder to access because maven project create different directory structure after build.
Solution depend on your project requirement. You can use below code to get qualified full path of a file
public static void main(String [] args) { String filename="student_data.json"; //To get path of file Path path = Paths.get(filename); //To print absolute path of file System.out.println(path.getAbsolutePath());
You would like to see
Follow below link to see more Java issues solutions
You must be logged in to post a comment.