java中获取文件路径.docx
《java中获取文件路径.docx》由会员分享,可在线阅读,更多相关《java中获取文件路径.docx(24页珍藏版)》请在冰豆网上搜索。
java中获取文件路径
java中获取文件路径
获取Java文件路径
1.如何获得当前文件路径
常用:
字符串类型:
System.getProperty(“user.dir");
综合:
package.zcjl.test.base;
importjava.io.File;
publicclassTest{
publicstaticvoidmain(String[]args)throwsException{
System.out.println(
Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(Test.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(Test.class.getResource(""));
System.out.println(Test.class.getResource("/"));
System.out.println(newFile("").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
2.Web服务中
(1).Weblogic
WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:
如果你的weblogic安装在c:
\bea\weblogic700.....
那么,你的文件根路径就是c:
\.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:
\yourconfig\yourconf.properties,
直接使用newFileInputStream("yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放在yourwebapp\yourconfig\yourconf.properties,
这样使用:
newFileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。
(2).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成*****
的路径为根.比如用新建文件法测试Filef=newFile("a.htm");
这个a.htm在resin的安装目录下
(4).如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:
getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web发布根路径下WEB-INF/classes
(5).获得文件真实路径
stringfile_real_path=request.getRealPath("mypath/filename");
通常使用request.getRealPath("/");
3.文件操作的类
importjava.io.*;
import.cn.*;
importjava.util.*;
//importjavax.swing.filechooser.*;
//importorg.jr.swing.filter.*;
/__
*此类中封装一些常用的文件操作。
*所有方法都是静态方法,不需要生成此类的实例,
*为避免生成此类的实例,构造方法被申明为private类型的。
*@since0.1
*/
publicclassFileUtil{
/__
*私有构造方法,防止类的实例化,因为工具类不需要实例化。
*/
privateFileUtil(){
}
/__
*修改文件的最后访问时间。
*如果文件不存在则创建该文件。
*b目前这个方法的行为方式还不稳定,主要是方法有些信息输出,这些信息输出是否保留还在考
虑中。
/b
*@paramfile需要修改最后访问时间的文件。
*@since0.1
*/
publicstaticvoidtouch(Fil
efile){
longcurrentTime=System.currentTimeMillis();
if(!
file.exists()){
System.err.println("filenotfound:
"file.getName());
System.err.println("Createanewfile:
"file.getName());
try{
if(file.createNewFile()){
//System.out.println("Succeeded!
");
}
else{
//System.err.println("Createfilefailed!
");
}
}
catch(IOExceptione){
//System.err.println("Createfilefailed!
");
e.printStackTrace();
}
}
booleanresult=file.setLastModified(currentTime);
if(!
result){
//System.err.println("touchfailed:
"file.getName());
}
}
/__
*修改文件的最后访问时间。
*如果文件不存在则创建该文件。
*b目前这个方法的行为方式还不稳定,主要是方法有些信息输出,这些信息输出是否保留还在考
虑中。
/b
*@paramfileName需要修改最后访问时间的文件的文件名。
*@since0.1
*/
publicstaticvoidtouch(StringfileName){
Filefile=newFile(fileName);
touch(file);
}
/__
*修改文件的最后访问时间。
*如果文件不存在则创建该文件。
*b目前这个方法的行为方式还不稳定,主要是方法有些信息输出,这些信息输出是否保留还在考
虑中。
/b
*@paramfiles需要修改最后访问时间的文件数组。
*@since0.1
*/
publicstaticvoidtouch(File[]files){
for(inti=0;ifiles.length;i){
touch(files);
}
}
/__
*修改文件的最后访问时间。
*如果文件不存在则创建该文件。
*b目前这个方法的行为方式还不稳定,主要是方法有些信息输出,这些信息输出是否保留还在考
虑中。
/b
*@paramfileNames需要修改最后访问时间的文件名数组。
*@since0.1
*/
publicstaticvoidtouch(String[]fileNames){
File[]files=newFile[fileNames.length];
for(inti=0;ifileNames.length;i){
files=newFile(fileNames);
}
touch(files);
}
/__
*判断指定的文件是否存在。
*@paramfileName要判断的文件的文件名
*@return存在时返回true,否则返回false。
*@since0.1
*/
publicstaticbooleanisFileExist(StringfileName){
returnnewFile(fileName).isFile();
}
/__
*创建指定的目录。
*如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。
*b注意:
可能会在返回false的时候创建部分父目录。
/b
*@paramfile要创建的目录
*@return完全创建成功时返回true,否则返回false。
*@since0.1
*/
publicstaticbooleanmakeDirectory(Filefile){
Fileparent=file.getParentFile();
if(parent!
=null){
returnparent.mkdirs();
}
returnfalse;
}
/__
*创建指定的目录。
*如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。
*b注意:
可能会在返回false的时候创建部分父目录。
/b
*@paramfileName要创建的目录的目录名
*@return完全创建成功时返回true,否则返回fals
e。
*@since0.1
*/
publicstaticbooleanmakeDirectory(StringfileName){
Filefile=newFile(fileName);
returnmakeDirectory(file);
}
/__
*清空指定目录中的文件。
*这个方法将尽可能删除所有的文件,但是只要有一个文件没有被删除都会返回false。
*另外这个方法不会迭代删除,即不会删除子目录及其内容。
*@paramdirectory要清空的目录
*@return目录下的所有文件都被成功删除时返回true,否则返回false.
*@since0.1
*/
publicstaticbooleanemptyDirectory(Filedirectory){
booleanresult=false;
File[]entries=directory.listFiles();
for(inti=0;ientries.length;i){
if(!
entries.delete()){
result=false;
}
}
returntrue;
}
/__
*清空指定目录中的文件。
*这个方法将尽可能删除所有的文件,但是只要有一个文件没有被删除都会返回false。
*另外这个方法不会迭代删除,即不会删除子目录及其内容。
*@paramdirectoryName要清空的目录的目录名
*@return目录下的所有文件都被成功删除时返回true,否则返回false。
*@since0.1
*/
publicstaticbooleanemptyDirectory(StringdirectoryName){
Filedir=newFile(directoryName);
returnemptyDirectory(dir);
}
/__
*删除指定目录及其中的所有内容。
*@paramdirName要删除的目录的目录名
*@return删除成功时返回true,否则返回false。
*@since0.1
*/
publicstaticbooleandeleteDirectory(StringdirName){
returndeleteDirectory(newFile(dirName));
}
/__
*删除指定目录及其中的所有内容。
*@paramdir要删除的目录
*@return删除成功时返回true,否则返回false。
*@since0.1
*/
publicstaticbooleandeleteDirectory(Filedir){
if((dir==null)||!
dir.isDirectory()){
thrownewIllegalArgumentException("Argument"dir
"isnotadirectory.");
}
File[]entries=dir.listFiles();
intsz=entries.length;
for(inti=0;ii){
if(entries.isDirectory()){
if(!
deleteDirectory(entries)){
returnfalse;
}
}
else{
if(!
entries.delete()){
returnfalse;
}
}
}
if(!
dir.delete()){
returnfalse;
}
returntrue;
}
/__
*返回文件的URL地址。
*@paramfile文件
*@return文件对应的的URL地址
*@throwsMalformedURLException
*@since0.4
*@deprecated在实现的时候没有注意到File类本身带一个toURL方法将文件路径转换为URL。
*请使用File.toURL方法。
*/
publicstaticURLgetURL(Filefile)throwsMalformedURLException{
StringfileURL="file:
/"file.getAbsolutePath();
URLurl=newURL(fileURL);
returnurl;
}
/__
*从文件路径得到文件名。
*@paramfilePath文件的路径,可以是相对路径也可以是绝对路径
*@return对应的文件名
*@since0.4
*/
publicstaticStringgetFileName(StringfilePath){
Filefile=newFile(filePath);
returnfile.getName();
}
/__
*从文件名得
到文件绝对路径。
*@paramfileName文件名
*@return对应的文件路径
*@since0.4
*/
publicstaticStringgetFilePath(StringfileName){
Filefile=newFile(fileName);
returnfile.getAbsolutePath();
}
/__
*将DOS/Windows格式的路径转换为UNIX/Linux格式的路径。
*其实就是将路径中的"\"全部换为"/",因为在某些情况下我们转换为这种方式比较方便,
*某中程度上说"/"比"\"更适合作为路径分隔符,而且DOS/Windows也将它当作路径分隔符。
*@paramfilePath转换前的路径
*@return转换后的路径
*@since0.4
*/
publicstaticStringtoUNIXpath(StringfilePath){
returnfilePath.replace('\\','/');
}
/__
*从文件名得到UNIX风格的文件绝对路径。
*@paramfileName文件名
*@return对应的UNIX风格的文件路径
*@since0.4
*@see#toUNIXpath(StringfilePath)toUNIXpath
*/
publicstaticStringgetUNIXfilePath(StringfileName){
Filefile=newFile(fileName);
returntoUNIXpath(file.getAbsolutePath());
}
/__
*得到文件的类型。
*实际上就是得到文件名中最后一个“.”后面的部分。
*@paramfileName文件名
*@return文件名中的类型部分
*@since0.5
*/
publicstaticStringgetTypePart(StringfileName){
intpoint=.cnstIndexOf('.');
intlength=fileName.length();
if(point==-1||point==length-1){
return"";
}
else{
returnfileName.substring(point1,length);
}
}
/__
*得到文件的类型。
*实际上就是得到文件名中最后一个“.”后面的部分。
*@paramfile文件
*@return文件名中的类型部分
*@since0.5
*/
publicstaticStringgetFileType(Filefile){
returngetTypePart(file.getName());
}
/__
*得到文件的名字部分。
*实际上就是路径中的最后一个路径分隔符后的部分。
*@paramfileName文件名
*@return文件名中的名字部分
*@since0.5
*/
publicstaticStringgetNamePart(StringfileName){
intpoint=getPathLsatIndex(fileName);
intlength=fileName.length();
if(point==-1){
returnfileName;
}
elseif(point==length-1){
intsecondPoint=getPathLsatIndex(fileName,point-1);
if(secondPoint==-1){
if(length==1){
returnfileName;
}
else{
returnfileName.substring(0,point);
}
}
else{
returnfileName.substring(secondPoint1,point);
}
}
else{
returnfileName.substring(point1);
}
}
/__
*得到文件名中的父路径部分。
*对两种路径分隔符都有效。
*不存在时返回""。
*如果文件名是以路径分隔符结尾的则不考虑该分隔符,例如"/path/"返回""。
*@paramfileName文件名
*@return父路径,不存在或者已经是父目录时返回""
*@since0.5
*/
publicstaticStringgetPathPart(StringfileName){
intpoint=getPathLsatIndex(fileName);
intlength=fileName.length();
if(point==-1){
return"";
}
elseif(point==length-1){
intsecondPoi
nt=getPathLsatIndex(fileName,point-1);
if(secondPoint==-1){
return"";
}
else{
returnfileName.substring(0,secondPoint);
}
}
else{
returnfileName.substring(0,point);
}
}
/__
*得到路径分隔符在文件路径中首次出现的位置。
*对于DOS或者UNIX风格的分隔符都可以。
*@paramfileName文件路径
*@return路径分隔符在路径中首次出现的位置,没有出现时返回-1。
*@since0.5
*/
publicstaticintgetPathIndex(StringfileName){
intpoint=fileName.indexOf('/');
if(point==-1){
point=fileName.indexOf('\\');
}
returnpoint;
}
/__
*得到路径分隔符在文件路径中指定位置后首次出现的位置。
*对于DOS或者UNIX风格的分隔符都可以。
*@paramfileName文件路径
*@paramfromIndex开始查找的位置
*@return路径分隔符在路径中指定位置后首次出现的位置,没有出现时返回-1。
*@since0.5
*/
publicstaticintgetPathIndex(StringfileName,intfromIndex){
intpoint=fileName.indexOf('/',fromIndex);
if(point==-1){
point=fileName.indexOf('\\',fromIndex);
}
returnpoint;
}
/__
*得到路径分隔符在文件路径中最后出现的位置。
*对于DOS或者UNIX风格的分隔符都可以。
*@paramfileName文件路径
*@return路径分隔符在路径中最后出现的位置,没有出