
写了一个读取本地文件的方法, File file = new File(htmlFile); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); while((s=brreadLine())!=null){ aladd(s); } 在当前类写了main方法测试了一下是可行的, 但是页面某方法想调用该方法,不能实现。 总结问题是:只有放在static方法中可行,在其他地方调用都显示找不到指定文件。 文件结构: 把本地文件放在了web-inf的classes下了,相对路径写的(“/filetxt”); 求教为啥static方法可以,其他地方调用不行,这个函数本身不是静态的啊。
你说是你把编译的jar包封装到一个exe里面去了吗?获取这个exe的当前目录的话,试着用 new File("")getAbsolutePath(),应该就是你执行这个exe的路径。(即你在哪个目录下执行的这个exe,File("")getAbsolutePath()的结果就是哪个目录)
1 用servlet获取
11 获取项目的绝对路径
requestgetSession()getServletContext()getRealPath("")
12 获取浏览器地址
requestgetRequestURL()
13 获取当前文件的绝对路径
requestgetSession()getServletContext()getRealPath(requestgetRequestURI())
2获取当前的classpath路径
String a2=类名classgetResource("")toString();
String a3=DBConnectionclassgetResource("/")toString();
String a4=DBConnectionclassgetClassLoader()getResource("")toString();
String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();
//输出很好理解
3、获取文件的绝对路径
String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();
int num=tindexOf("metadata");
String path=tsubstring(1,num)replace('/', '\\')+"项目名\\WebContent\\文件";
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建File对象
File file = new File("d:\\");
// 使用递归方法做
dg(file);
}
private static void dg(File fl) {
// TODO Auto-generated method stub
// 创建file数组用来存储数据
File[] filArr = fllistFiles();
// 判断FiLe数组不能为空
if (filArr != null) {
// 使用for遍历
for (File f : filArr) {
// 如果是文件夹 就递归
if (fisDirectory()) {
// 递归
dg(f);
} else if (fisFile()) {
Systemoutprintln(fgetAbsolutePath());
}
}
}
}
相对路径的话,可以先获取到当前文件的编译路径,之后在找到想找文件的路径的思路来实现。
举例:
XMLSclassgetClass()getResourceAsStream("/test/testxml");
解释:XMLSclassgetClass()是获取当前的类编译路径,之后通过getResourceAsStream的形式即可找到要读取的文件的路径。
备注:这个方法中后面的路径也可以通过截取的形式来进行路径获取,实现原理都是找到当前类路径,之后通过相对位置找到另外文件路径。
获取jar包的路径的方法:
xxxxxclassgetProtectionDomain()getCodeSource()getLocation()
其中xxxxx是类名
找URL
关于绝对路径和相对路径:
绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz esttxt 代表了testtxt文件的绝对路径。>
我觉得如果只是为了得到路径,那491064739的回答其实已经给你思路了,就是传入个File f,然后String s = fgetAbsolutePath();得到绝对路径!不过,似乎你问的是Path后,我的思路是传入两个参数,一个workspace的路径,一个是File f 。伪代码如下:
public String getPathInfo(String workspace,File file) throw Exception{
String path = filegeAbsolute(); //绝对路径
pathreplaceAll("\\\\","/"); //把\ 替换成 /
workspacereplaceAll("\\\\","/");
String info = pathsubString(workspacelength-1); //-1是留下/
//因为是绝对路径,所以文件名最前面的就是workspace,把前面那段去掉就是Path后的了
return info;
}
大致上逻辑就是这样吧
以上就是关于java怎么获取本地文件路径全部的内容,包括:java怎么获取本地文件路径、java怎么获取当前打包的exe路径、java如何获取类的绝对路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)