String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length());
This would be my solution
I found this more useful for getting the absolute file location.
File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
File API File.getParent or File.getParentFile should return you Directory of file.
Your code should be like :
File file = new File("c:\\temp\\java\\testfile");
if(!file.exists()){
file = file.getParentFile();
}
You can additionally check your parent file is directory using File.isDirectory API
if(file.isDirectory()){
System.out.println("file is directory ");
}
File.getParent() from Java Documentation
If you do something like this:
File file = new File("test.txt");
String parent = file.getParent();
parent
will be null.
So to get directory of this file you can do next:
parent = file.getAbsoluteFile().getParent();
File directory = new File("Enter any directory name or file name"); boolean isDirectory = directory.isDirectory(); if (isDirectory) { // It returns true if directory is a directory. System.out.println("the name you have entered is a directory : " + directory); //It returns the absolutepath of a directory. System.out.println("the path is " + directory.getAbsolutePath()); } else { // It returns false if directory is a file. System.out.println("the name you have entered is a file : " + directory); //It returns the absolute path of a file. System.out.println("the path is " + file.getParent()); }
You can use this
File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
dir=filePath.getAbsolutePath();
}
else
{
dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}
Source: Stackoverflow.com