|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发程序前一段做个程序,碰到了如许一个成绩,想使用绝对路径删失落一个文件(实践存在的),总是删不失落.真是急人呀,最初让我费了好鼎力气才算把它办理失落,成绩不防跟人人说说,万一碰到如许的成绩,就不必再费力了!
情形是如许的:我的Tomcat装在了c盘,而我的假造目次设在了E:/work下,我在E:/work/test/image下有个图片,test.gif我想经由过程程序删失落它,但他的相对路径不断定(为了思索到程序今后的移植,相对路径是不断定的)。
假定del.jsp文件在e:/work/test下,用上面的程序仿佛能够删失落:
<!--原始的del.jsp源文件-->
<%@pagecontentType="text/html;charset=GBK"errorPage=""%>
<%request.setCharacterEncoding("GBK");%>
<%@pagelanguage="java"import="java.sql.*"import="java.util.*"import="java.text.*"import="java.io.*"%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GBK">
<title>删除乐成页面</title>
</head>
<body>
Filef=newFile("/image/",test.gif);
booleana=f.delete();
out.print("a="+a);
</body>
</html>
但现实上不可,你会发明a=false;
这就必要猎取其相对路径,我们用java程序来做一个专门来猎取相对路径的javaBean(path_test.java)就能够了。
path_test.java的代码以下:
packagepathtest;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.jsp.PageContext;//导进PageContext类,不要忘了
publicclasspath_test
{
protectedServletContextm_application;
privatebooleanm_denyPhysicalPath;
publicpath_test()
{
}
publicfinalvoidinitialize(PageContextpageContext)
throwsServletException
{
m_application=pageContext.getServletContext();
}
publicStringgetPhysicalPath(StringfilePathName,intoption)
throwsIOException
{
Stringpath=newString();
StringfileName=newString();
StringfileSeparator=newString();
booleanisPhysical=false;
fileSeparator=System.getProperty("file.separator");
if(filePathName==null)
thrownewIllegalArgumentException("Thereisnospecifieddestinationfile(1140).");
if(filePathName.equals(""))
thrownewIllegalArgumentException("Thereisnospecifieddestinationfile(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.FilephysicalPath=newjava.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((newStringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName));
returnpath;
}
if(isPhysical)
{
if(m_denyPhysicalPath)
thrownewIllegalArgumentException("Physicalpathisdenied(1125).");
else
returnfilePathName;
}else
{
thrownewIllegalArgumentException("Thispathdoesnotexist(1135).");
}
}
if(option==1)
{
if(isVirtual(path))
{
path=m_application.getRealPath(path);
if(path.endsWith(fileSeparator))
path=path+fileName;
else
path=String.valueOf((newStringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName));
returnpath;
}
if(isPhysical)
thrownewIllegalArgumentException("Thepathisnotavirtualpath.");
else
thrownewIllegalArgumentException("Thispathdoesnotexist(1135).");
}
if(option==2)
{
if(isPhysical)
if(m_denyPhysicalPath)
thrownewIllegalArgumentException("Physicalpathisdenied(1125).");
else
returnfilePathName;
if(isVirtual(path))
thrownewIllegalArgumentException("Thepathisnotaphysicalpath.");
else
thrownewIllegalArgumentException("Thispathdoesnotexist(1135).");
}
else
{
returnnull;
}
}
privatebooleanisVirtual(StringpathName)//判别是不是是假造路径
{
if(m_application.getRealPath(pathName)!=null)
{
java.io.FilevirtualFile=newjava.io.File(m_application.getRealPath(pathName));
returnvirtualFile.exists();
}
else
{
returnfalse;
}
}
}
对path_test.java编译后,失掉包pathtest,内里有path_test.class类,
把全部包放到假造目次的classes下,然后再把del.jsp文件改成以下程序,统统都OK了!
<!--改后的del.jsp的源文件-->
<%@pagecontentType="text/html;charset=GBK"errorPage=""%>
<%request.setCharacterEncoding("GBK");%>
<%@pagelanguage="java"import="java.sql.*"import="java.util.*"import="java.text.*"import="java.io.*"%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GBK">
<title>删除乐成页面</title>
</head>
<body>
<jsp:useBeanid="pathtest"scope="page"class="pathtest.path_test"/>
pathtest.initialize(pageContext);//初始化
Stringdir1=pathtest.getPhysicalPath("/test/image/",0);//传参数
out.print(dir1);//输入的是相对路径
Filefile=newFile(dir1,"test.gif");//天生文件对象
booleana=file.delete();
out.print("a="+a);
</body">
</html>
此时a=true;暗示删除乐成!
到此为止,成绩全体弄定。
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。 |
|