仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1478|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:用Java程序猎取相对路径

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:44:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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,实现无缝刷新。
若相依 该用户已被删除
沙发
发表于 2015-1-21 13:29:37 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
爱飞 该用户已被删除
板凳
发表于 2015-1-30 19:09:35 | 只看该作者
是一种为 Internet发展的计算机语言
小妖女 该用户已被删除
地板
发表于 2015-2-6 15:08:34 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
老尸 该用户已被删除
5#
发表于 2015-2-13 14:45:43 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
透明 该用户已被删除
6#
发表于 2015-2-14 15:16:52 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
柔情似水 该用户已被删除
7#
发表于 2015-2-18 19:02:59 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
飘灵儿 该用户已被删除
8#
发表于 2015-2-26 21:57:18 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
再现理想 该用户已被删除
9#
发表于 2015-3-11 11:05:58 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
admin 该用户已被删除
10#
发表于 2015-3-18 07:27:30 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
变相怪杰 该用户已被删除
11#
发表于 2015-3-25 13:09:02 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
12#
发表于 2015-4-7 12:42:04 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
小魔女 该用户已被删除
13#
发表于 2015-4-17 02:40:44 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
14#
发表于 2015-4-22 10:08:45 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
海妖 该用户已被删除
15#
发表于 2015-4-24 07:01:31 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
因胸联盟 该用户已被删除
16#
发表于 2015-5-5 15:44:33 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
若天明 该用户已被删除
17#
发表于 2015-6-18 22:35:31 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
兰色精灵 该用户已被删除
18#
发表于 2015-6-21 09:22:00 | 只看该作者
是一种突破用户端机器环境和CPU
只想知道 该用户已被删除
19#
发表于 2015-6-24 02:42:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
再见西城 该用户已被删除
20#
发表于 2015-6-28 21:51:13 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-29 09:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表