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
请求帮助,万分感激哈。
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 获取当前文件的路径,路径全名的主要内容,如果未能解决你的问题,请参考以下文章