导航:首页 > 文件教程 > java相对路径获取文件

java相对路径获取文件

发布时间:2024-11-15 08:00:28

java 相对路径取不到文件

B中的类会读取其配置文件,new File但是调用B的类时候找不到配置文件把读取的代码改下 文件的路径可以用

② java里绝对路径和相对路径的区别

按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”

相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:

假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即d盘根目录:D:/.同时” 当前用户目录”也是D:/.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.
我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.
搞清了这些,我们可以使用相对路径来创建文件,例如:
File file = new File(“a.txt”);
File.createNewFile();
假设jvm是在”D:/”下启动的,那么a.txt就会生成在D:/a.txt;
此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”./”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目录完整路径:
File f = new File(“.”);
String absolutePath = f.getAbsolutePath();
System.out.println(absolutePath);//D:/
最后要说说在eclipse中的情况:
Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:/work/IDE/workspace/blog.那么这个路径就是jvm的启动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:/work/IDE/workspace/blog.”

Tomcat中的情况.
如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:
File f = new File(“.”);
String absolutePath = f.getAbsolutePath();
System.out.println(absolutePath);
那么输出的将是tomcat下的bin目录.我的机器就是” D:/work/server/jakarta-tomcat-5.0.28/bin/.”,由此可以看出tomcat服务器是在bin目录下启动jvm的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.

③ java中用相对路径打开文件。

1、在Java开发工具的project中使用相对路径

在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。创建文件的写法是:

Filef=newFile("src/com/lavasoft/res/a.txt");
Filef=newFile("doc/b.txt");

注意:路径不以“/”开头;

脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此。

2、通过CLASSPATH读取包内文件

读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:

InputStreamin=ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

有了字节流,就能读取到文件内容了。

注意:这里必须以“/”开头;

3、看看完整的java中用相对路径打开文件测试代码:

packagecom.lavasoft.test;

importjava.io.*;

/**
*Java读取相对路径的文件
*

*/
publicclassReadFile{
publicstaticvoidmain(String[]args){
readTextA_ByClassPath();
readTextA_ByProjectRelativePath();
readTextB_ByProjectRelativePath();
}

/**
*通过工程相对路径读取(包内)文件,注意不以“/”开头
*/
publicstaticvoidreadTextA_ByProjectRelativePath(){
System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");
Filef=newFile("src/com/lavasoft/res/a.txt");
Stringa=file2String(f,"GBK");
System.out.println(a);
}

/**
*通过工程相对路径读取(包外)文件,注意不以“/”开头
*/
publicstaticvoidreadTextB_ByProjectRelativePath(){
System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");
Filef=newFile("doc/b.txt");
Stringb=file2String(f,"GBK");
System.out.println(b);
}


/**
*通过CLASSPATH读取包内文件,注意以“/”开头
*/
publicstaticvoidreadTextA_ByClassPath(){
System.out.println("-----------------readTextA_ByClassPath---------------------");
InputStreamin=ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
Stringa=stream2String(in,"GBK");
System.out.println(a);
}

/**
*文件转换为字符串
*
*@paramf文件
*@paramcharset文件的字符集
*@return文件内容
*/
publicstaticStringfile2String(Filef,Stringcharset){
Stringresult=null;
try{
result=stream2String(newFileInputStream(f),charset);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
returnresult;
}

/**
*文件转换为字符串
*
*@paramin字节流
*@paramcharset文件的字符集
*@return文件内容
*/
(InputStreamin,Stringcharset){
StringBuffersb=newStringBuffer();
try{
Readerr=newInputStreamReader(in,charset);
intlength=0;
for(char[]c=newchar[1024];(length=r.read(c))!=-1;){
sb.append(c,0,length);
}
r.close();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
}

④ 大神,java存文件到数据库是绝对路径还是相对路径呀

存文件到数据库?还是存路径到数据库?还是说同时存路径和文件?
这个表怎样定义的?

⑤ Java 获取相对路径问题 System.getProperty("user.dir");

不要用user.dir,这是用户的根目录。
也不要在application下测试web下的东西。回
类似于这么写:答
String uploadPath = getContext().getServletContext().getRealPath(
"/")
+ File.separator + "upload" + File.separator;

⑥ java如何获取文件的相对路径啊

一个例子,如果有一个Test文件夹里面有test.java和hello.txt.如果你想用test.java操作hello.txt
只要在test.java中这样写File file=new File("hello.txt");//这样就是相对路径专。如果文件结构属是
Test文件夹
... |------test.java

... |------hello.txt

... |------source文件夹

................. |---------world.txt

如果想在test.java中操作world.txt。只要这样写File file=new File("source/world.txt");
另外,在web开发中/代表项目文件夹根目录,当然也有可能代替webapps,区分方法是:如果/开头的uri是给浏览器解析则/代表webapps,如果是给服务器后台解析,则代表项目文件

阅读全文

与java相对路径获取文件相关的资料

热点内容
日版iphone6在香港可以换吗 浏览:218
如何引入一个文件 浏览:598
违法记录网络查询如何消除 浏览:510
创世绑定了qq号怎么改密码呢 浏览:161
怎样只复制多个文件夹不复制内容 浏览:599
强制进程结束工具 浏览:637
后缀f文件名 浏览:490
linux配置页面命令 浏览:542
慧编程安装完黑屏怎么回事 浏览:246
mysql安装后的配置文件 浏览:261
oppo如何创建文件夹 浏览:30
编程算法逻辑怎么理解 浏览:577
4m和10m网络有什么区别 浏览:139
怎么把图片放在文件里手机 浏览:799
删除注册文件的软件 浏览:461
javascript滑动事件教程 浏览:706
网站点击高有什么收入 浏览:964
公众号一键连wifi密码吗 浏览:628
ios从微信启动应用程序 浏览:501
mc9编程刀库怎么用 浏览:446

友情链接