java 获取当前文件的路径,路径全名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 获取当前文件的路径,路径全名相关的知识,希望对你有一定的参考价值。

在开发工具中,比如有一个java文件名称为Cat.java
此时对Cat.java右击->属性->资源选项中,
可以看到:
Path: /MyHibernate/src/cjq/hibernate/tutorial/eg/DomesticCat.java
Type: File (Java Source File)
Location: D:\eclipseWorkspace\MyHibernate\src\cjq\hibernate\tutorial\eg\DomesticCat.java
Size: 218 bytes
现在如何用java代码,得到Path下的那一串字符串路径呢,
如在本例为:/MyHibernate/src/cjq/hibernate/tutorial/eg/DomesticCat.java
请求帮助,万分感激哈。

我觉得如果只是为了得到路径,那491064739的回答其实已经给你思路了,就是传入个File f,然后String s = f.getAbsolutePath();得到绝对路径!不过,似乎你问的是Path后,我的思路是传入两个参数,一个workspace的路径,一个是File f 。伪代码如下:
public String getPathInfo(String workspace,File file) throw Exception
String path = file.geAbsolute(); //绝对路径
path.replaceAll("\\\\","/"); //把\ 替换成 /
workspace.replaceAll("\\\\","/");
String info = path.subString(workspace.length-1); //-1是留下/
//因为是绝对路径,所以文件名最前面的就是workspace,把前面那段去掉就是Path后的了
return info;


大致上逻辑就是这样吧
参考技术A

Java编程中,获取当前文件所在的路径,路径为物理路径全名,代码如下:

package net.oschina.tester;
import java.net.URL;
import org.apache.commons.lang.StringUtils;
 
/**
 * 文件的路径全名获取
 * @author Administrator 
 * @date 2015-07-05 下午21:56:43
 */
public class ResourcePathTester 
 
    public static void main(String[] args) 
        System.out.println(getResourcePath());
    
     
    private static String getResourcePath() 
        String className = ResourcePathTester.class.getName();
        String classNamePath = className.replace(".", "/") + ".class";
        URL is = ResourcePathTester.class.getClassLoader().getResource(classNamePath);
        String path = is.getFile();
        path = StringUtils.replace(path, "%20", " ");
 
        return StringUtils.removeStart(path, "/");
    

参考技术B 楼上正解

Java获取当前路径

【中文标题】Java获取当前路径【英文标题】:Java getting current paths 【发布时间】:2013-05-06 19:23:29 【问题描述】:

我在尝试找出路径问题的最佳解决方案时遇到了一点问题。我正在运行一个 java 测试,我想得到两件事。

    项目的绝对位置 当前正在运行的类文件的绝对位置

我想在操作系统版本上正确使用 / 或 \,以便文件夹结构保持不变。我目前正在使用它,但它并不是我想要的

final String parentDir = System.getProperty("user.dir");
final String path = "src/test/java/" + method.getDeclaringClass()
    .getCanonicalName().replaceAll("\\.", "/") + ".java";

任何帮助将不胜感激。谢谢

更新:我正在尝试获取预编译代码的 url,因为我需要访问代码中的 cmets。这可能会改变你的一些人的答案

更新 2:好的,我让它工作了。

final String path = new File(getClass().getResource("/").getFile())
            .getParent().split("target")[0] + "src/test/java/" + method
            .getDeclaringClass().getCanonicalName()
            .replaceAll("\\.", "/") + ".java";

谢谢大家

【问题讨论】:

您可以查看此链接获取本地分隔符。 ***.com/questions/8075373/… 对当前代码的小改进:使用replace('.', '/') 而不是replaceAll("\\.", "/") 以避免正则表达式引擎。 获取项目的绝对位置尝试在控制台打印以下内容: System.out.println(new File(".").getAbsolutePath()); mike,试过了,这就是我得到的 /Users/john/work/development/automation/product/。 【参考方案1】:

鉴于您是从 MyClass 调用它,您应该调用 File directory = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();

我曾经有过同样的问题。除了 Jatin 的回答之外,我还必须添加一个 toURI() 以在所有平台(Windows 等)上获取正确的路径并发布 1.5 JVM。

【讨论】:

试过你的命令,我得到了以下 /Users/john/work/development/automation/product/store/target Christian,可以说它的工作原理并不能真正解决我的问题。明天上班的时候我会在windows机器上试试【参考方案2】:

如果说你是从 jar 文件运行的:

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent()+"/"

返回包含 jar 文件的文件夹。

删除上面的.getParent() 以获得确切的class 文件的路径

【讨论】:

试过你的命令,我得到了以下 /Users/john/work/development/automation/product/store/target/ 不是你的类的路径吗?对于项目文件夹new File("."); 也可以。

以上是关于java 获取当前文件的路径,路径全名的主要内容,如果未能解决你的问题,请参考以下文章

java中怎样获取当前路径的绝对路径

如何获得当前Java文件的路径

在java中怎么获取页面的路径

jsp页面如何获取当前页面路径

通过java获取当前项目路径

java怎么获取本地文件路径