分享
 
 
 

java程序获取绝对路径的代码!

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前一段做个程序,碰到了这样一个问题,想利用相对路径删掉一个文件(实际存在的),老是删不掉. 真是急人呀,最后让我费了好大力气才算把它解决掉,问题不防跟大家说说,万一碰到这样的问题,就不用再费劲了!

情况是这样的:我的Tomcat装在了c盘,而我的虚拟目录设在了E:/work下, 我在E:/work/test/image下有个图片,test.gif 我想通过程序删掉它,但他的绝对路径不确定(为了考虑到程序以后的移植,绝对路径是不确定的)。

假设del.jsp文件在e:/work/test 下,用下面的程序似乎可以删掉:

<!--原始的del.jsp源文件-->

<%@ page contentType="text/Html; charset=GBK" errorPage="" %>

<%request.setCharacterEncoding("GBK");%>

<%@ page language="Java" import="java.sql.*" import="java.util.*" import ="java.text.*" import="java.io.*"%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GBK">

<title>删除成功页面</title>

</head>

<body>

File f=new File("/image/",test.gif);

boolean a=f.delete();

out.print("a="+a);

</body>

</html>

但事实上不行,你会发现a=false;

这就需要获取其绝对路径, 我们用java程序来做一个专门来获取绝对路径的javaBean(path_test.java)就可以了。

path_test.java的代码如下:

package pathtest;

import java.io.*;

import javax.servlet.*;

import javax.servlet.jsp.PageContext;//导入PageContext类,不要忘了

public class path_test

{

protected ServletContext m_application;

private boolean m_denyPhysicalPath;

public path_test()

{

}

public final void initialize(PageContext pageContext)

throws ServletException

{

m_application = pageContext.getServletContext();

}

public String getPhysicalPath(String filePathName, int option)

throws IOException

{

String path = new String();

String fileName = new String();

String fileSeparator = new String();

boolean isPhysical = false;

fileSeparator=System.getProperty("file.separator");

if(filePathName == null)

throw new IllegalArgumentException("There is no specified destination file (1140).");

if(filePathName.equals(""))

throw new IllegalArgumentException("There is no specified destination file (1140).");

if(filePathName.lastIndexOf("\") >= 0)

{

path = filePathName.substring(0, filePathName.lastIndexOf("\"));

fileName = filePathName.substring(filePathName.lastIndexOf("\") + 1);

}

if(filePathName.lastIndexOf("/") >= 0)

{

path = filePathName.substring(0, filePathName.lastIndexOf("/"));

fileName = filePathName.substring(filePathName.lastIndexOf("/") + 1);

}

path = path.length() != 0 ? path : "/";

java.io.File physicalPath = new java.io.File(path);

if(physicalPath.exists())

isPhysical = true;

if(option == 0)

{

if(isVirtual(path))

{

path = m_application.getRealPath(path);

if(path.endsWith(fileSeparator))

path = path + fileName;

else

path = String.valueOf((new StringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName));

return path;

}

if(isPhysical)

{

if(m_denyPhysicalPath)

throw new IllegalArgumentException("Physical path is denied (1125).");

else

return filePathName;

} else

{

throw new IllegalArgumentException("This path does not exist (1135).");

}

}

if(option == 1)

{

if(isVirtual(path))

{

path = m_application.getRealPath(path);

if(path.endsWith(fileSeparator))

path = path + fileName;

else

path = String.valueOf((new StringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName));

return path;

}

if(isPhysical)

throw new IllegalArgumentException("The path is not a virtual path.");

else

throw new IllegalArgumentException("This path does not exist (1135).");

}

if(option == 2)

{

if(isPhysical)

if(m_denyPhysicalPath)

throw new IllegalArgumentException("Physical path is denied (1125).");

else

return filePathName;

if(isVirtual(path))

throw new IllegalArgumentException("The path is not a physical path.");

else

throw new IllegalArgumentException("This path does not exist (1135).");

}

else

{

return null;

}

}

private boolean isVirtual(String pathName) //判定是否是虚拟路径

{

if(m_application.getRealPath(pathName) != null)

{

java.io.File virtualFile = new java.io.File(m_application.getRealPath(pathName));

return virtualFile.exists();

}

else

{

return false;

}

}

}

对path_test.java编译后,得到包pathtest,里面有path_test.class类,

把整个包放到虚拟目录的classes下,然后再把del.jsp文件改成如下程序,一切都OK了!

<!--改后的del.jsp的源文件-->

<%@ page contentType="text/html; charset=GBK" errorPage="" %>

<%request.setCharacterEncoding("GBK");%>

<%@ page language="java" import="java.sql.*" import="java.util.*" import ="java.text.*" import="java.io.*"%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GBK">

<title>删除成功页面</title>

</head>

<body>

<jsp:useBean id="pathtest" scope="page" class="pathtest.path_test" />

pathtest.initialize(pageContext);//初始化

String dir1=pathtest.getPhysicalPath("/test/image/",0);//传参数

out.print(dir1);//输出的是绝对路径

File file=new File(dir1,"test.gif");//生成文件对象

boolean a=file.delete();

out.print("a="+a);

</body">

</html>

此时a=true;表示删除成功!

到此为止,问题全部搞定。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有