利用反射动态获取当前工程下的文件路径_并打成jar包

时间:2022-07-04 09:08:16

上一篇动态获取java中的文件路径

这一次我把它打包成jar包,方便随时导入使用。

新代码工程目录:

利用反射动态获取当前工程下的文件路径_并打成jar包

文件路径类FilePath.java:

package filepath;

import java.io.File;

public class FilePath
{
//当前的工程下的路径
public static String getProjectPath()
{

return System.getProperty("user.dir").toString()+"\\";

}

//编译之后src下的文件路径,根据工程路径拼接
public static String getSrcPath()
{
return System.getProperty("user.dir").toString()+"\\bin\\";
}
//根据反射获取编译之后的src下面的文件路径
public static String getSrcPath(Class<?> class1)
{
String path = class1.getClassLoader().getResource("").toString();
// System.out.println("编译后src路径:"+path);//file:/D:/dev/workspase2Spring/XMLreader/bin/
int m = path.indexOf("/");// file:/<----点位到file:后面的反斜杠
path = path.substring(m + 1);// 从反斜杠之后的一位开始截取字符串
// System.out.println("编译后src路径:"+path);
return path;
}
//根据反射获取编译之后包下面的文件路径
public static String getPackagePath(Class<?> class1)
{
//获取包路径
String thisPackagePath=class1.getResource("").toString();
// System.out.println("路径:"+thisPackagePath);
int m=thisPackagePath.indexOf("/");//去掉前面的file:
thisPackagePath=thisPackagePath.substring(m+1);
// System.out.println("路径:"+thisPackagePath);
return thisPackagePath;//返回当前包返回的路径。
}
public static String getProjectPath(Class<?> class1)
{
//获取src路径
String path = class1.getClassLoader().getResource("").toString();
// System.out.println("编译后src路径:"+path);//file:/D:/dev/workspase2Spring/XMLreader/bin/
//文件定位到src路径
File file=new File(path);//定位到这个目录下面
path=file.getParent();//返回src路径的父路径,也就是工程路径
// 结果 path=file:\D:\dev\workspase4javaBasis\FilePath
int m = path.indexOf("\\");// file:\<----点位到file:后面的反斜杠
path = path.substring(m + 1);// 从反斜杠之后的一位开始截取字符串
// System.out.println("编译后src路径:"+path);
return path;
}
// public static void main(String[] args)
// {
//System.out.println(FilePath.getProjectPath(FilePath.class));
// }
}

下面介绍怎么把这个工具类打成jar包,以便后面我们重复使用。

步骤如图:

利用反射动态获取当前工程下的文件路径_并打成jar包

利用反射动态获取当前工程下的文件路径_并打成jar包

利用反射动态获取当前工程下的文件路径_并打成jar包

利用反射动态获取当前工程下的文件路径_并打成jar包

利用反射动态获取当前工程下的文件路径_并打成jar包

这样就导出到你读路径下了,我这里是D:\dev\myJAR

进入你保存的目录,这是已经生成一个名为FilePath.jar的jar包了

利用反射动态获取当前工程下的文件路径_并打成jar包

然后接着在其他工程里导入这个jar包,就可以使用包下面的各种方法啦

导入的步骤:

利用反射动态获取当前工程下的文件路径_并打成jar包

然后到刚才保存的路径下选择你的jar包

利用反射动态获取当前工程下的文件路径_并打成jar包

新建一个测试类Test.java

利用反射动态获取当前工程下的文件路径_并打成jar包

Test.java代码:

package com.lan.testMyJar;

import filepath.FilePath;

public class Test
{
public static void main(String[] args)
{
System.out.println("当前的包路径为:"+FilePath.getPackagePath(Test.class));
System.out.println("当前的工程路径为:"+FilePath.getProjectPath());
System.out.println("当前的工程路径为:"+FilePath.getPackagePath(Test.class));
System.out.println("编译后的src路径为:"+FilePath.getSrcPath());
System.out.println("编译后的src路径为:"+FilePath.getSrcPath(Test.class));

}
}
说明:

利用反射动态获取当前工程下的文件路径_并打成jar包


运行测试类,结果:

利用反射动态获取当前工程下的文件路径_并打成jar包

可以看到这几个方法分别获到了编译之后的包路径,src路径(也就是bin),以及工程路径(工程路径不变)

下载我的FilePath.jar:刚上传后面再补上链接