考虑以下代码:
File file = new File("c:\\temp\\java\\testfile");
testfile
是一个文件,可能存在也可能不存在。
我想使用 File
对象获取目录 c:\\temp\\java\\
。要如何实现?
无论哪种情况,我都期望 file.getParent()
(或者file.getParentFile()
)能够给你想要的结果。
此外,如果您想查找原始的File
是否存在且是一个目录,则需要使用exists()
和isDirectory()
方法。
如果你做类似这样的事情:
File file = new File("test.txt");
String parent = file.getParent();
< p > < code > parent 会是 null。
所以要获取此文件的目录,可以执行以下操作:
parent = file.getAbsoluteFile().getParent();
文件API File.getParent 或者 File.getParentFile 可以返回文件所在的目录。
你的代码应该像这样:
File file = new File("c:\\temp\\java\\testfile");
if(!file.exists()){
file = file.getParentFile();
}
您可以使用File.isDirectory API检查您的父文件是否为目录。
if(file.isDirectory()){
System.out.println("file is directory ");
}
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());
}
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
dir=filePath.getAbsolutePath();
}
else
{
dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}
your_file_path = "C:\\testfiles\\temp\\testfile";
上的工作方式-我认为它不会给出您所希望的结果。 - J Richard SnapeString parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length());
2021年6月10日 如果给定的文件是...,所有当前的答案都会失败。
new File("." + File.separator + "."); //Odd, yes, but I've seen similar more often than you'd think is possible
对于一个简单、健壮的解决方案,请尝试...
File givenFile = new File("." + File.separator + ".." + File.separator + "." + File.separator + "fakeFilename"); //The file or dir we want the parent of, whether it exists or not
File parentFile = new File(givenFile.getAbsolutePath() + File.separator + "..");
System.out.println(parentFile.getAbsolutePath());
你可以使用这个
File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
我发现这对于获取绝对文件位置更有用。
File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
File
时要小心,因为一些写/读文件的库可能无法处理以反斜杠或 ".."(在理论上也是有效的)开头的路径。最好检查此处提到的所有可能性。这里。 - Neph