在我的程序中,我得到了一个文件路径E:\MyProject\ImageUploads\TestImageUpload\target\TestImageUpload2\
我需要向后走,得到E:\MyProject\ImageUploads\TestImageUpload
java
中最好的方法是什么?
答案 0 :(得分:3)
你的意思是?
for(File file = new File("E:\\MyProject\\ImageUploads\\TestImageUpload\\target\\TestImageUpload2\\"); file != null; file = file.getParentFile())
System.out.println(file);
输出:
E:\MyProject\ImageUploads\TestImageUpload\target\TestImageUpload2
E:\MyProject\ImageUploads\TestImageUpload\target
E:\MyProject\ImageUploads\TestImageUpload
E:\MyProject\ImageUploads
E:\MyProject
E:\
答案 1 :(得分:0)
假设你的形象是 C:/MyProject/ImageUploads/TestImageUpload/target/TestImageUpload2/someimg.png
apache common utils是你最好的朋友..
enter code here
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
结果是=> C:/ MyProject的/ ImageUploads / TestImageUpload /目标/ TestImageUpload2
然后平常钻... 希望它澄清..
.getparent()应用于使用同一个父级创建的文件,否则它是“不 - 不”,因此我更喜欢使用filenameutils并且关于那个...
答案 2 :(得分:0)
也许你可以使用它:
new File("E:\\MyProject\\ImageUploads\\TestImageUpload\\target\\TestImageUpload2\\")
.getAbsoluteFile().getParentFile()
基本思想是getAbsoluteFile()
将路径转换为绝对路径,然后getParentFile()
将找到指定文件的父级。如果你想要通过所有父母,你可以反复申请getParentFile()
(直到它返回null)。
无论路径是否以斜线结尾,这都有效。
答案 3 :(得分:0)
这符合我的要求。
int i = 2;
File filePath;
for(filePath = new File(path); i > 0; filePath = filePath.getParentFile())
i--;
答案 4 :(得分:-1)
你只需要把“../”这两个点向后跳