在java中获得文件的路径在我们做上传文件 *** 作时是不可避免的。 web 上运行 1:thisgetClass()getClassLoader()getResource("/")getPath(); thisgetClass()getClassLoader()getResource("")getPath(); 得到的是 ClassPath的绝对URI路径。
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:requestgetRequestURI(),结果:/TEST/testjsp。
(2)得到工程名:requestgetContextPath(),结果:/TEST。
(3)得到当前页面所在目录下全名称:requestgetServletPath()。结果:如果页面在jsp目录下 /TEST/jsp/testjsp。
(4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp"),结果D:/resin/webapps/TEST/testjsp。
(5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent();
结果:D:/resin/webapps/TEST。
拓展:在类中取得路径的方法
(1)类的绝对路径:String u=ClassclassgetClass()getResource("/")getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:SystemgetProperty("userdir")
结果:D:/TEST
<%=requestgetContextPath()%>是解决相对路径的问题,可返回站点的根路径。
<a href="<%=requestgetContextPath()%>/XXXjsp"> //这样获得的是绝对路径
<a href="XXXjsp"> //这样获得的是相对路径
<a href="<%=requestgetContextPath()%>/XXXXjsp"> 能够更有效的防治连接的失效。
requestgetContextPath()得到的是项目的名字,如果项目为根目录,则得到一个"",即空的字条串,
如果项目为dzjc, <%=requestgetContextPath()% >/ 将得到dzjc/,服务器端的路径则会自动加上,
<a href="XXXjsp"> 应该就是指当前路径下的这个xxxjsp页面,有时候也可以在head里设置html:base
来解决路径的问题,不过用的最多的还是requestgetContextPath。
用EL来表示相同功能的EL为:${pageContextrequestgetContextPath()}
requestgetScheme();
返回的协议名称,默认是>
参考例子如下,相关注释已经在代码中写明;
#region 文件上传
/// <summary>
/// 上传文件(自动分割)
/// </summary>
/// <param name="filePath">待上传的文件全路径名称(@"E:\FTP\ftproot\20070228DQCKzip")</param>
/// <param name="hostURL">服务器的地址</param>
/// <param name="byteCount">分割的字节大小</param>
/// <param name="userID">主机用户ID</param>
/// <param name="cruuent">当前字节指针</param>
/// <returns>成功返回"";失败则返回错误信息</returns>
public string UpLoadFile(string filePath, string hostURL, int byteCount, string userID, long cruuent)
{
string tmpURL = hostURL;
byteCount = byteCount 1024;
SystemNetWebClient WebClientObj = new SystemNetWebClient();
FileStream fStream = new FileStream(filePath, FileModeOpen, FileAccessRead);
BinaryReader bReader = new BinaryReader(fStream);
long length = fStreamLength;
string sMsg = "版式上传成功";
string fileName = filePathSubstring(filePathLastIndexOf('\\') + 1);
try
{
#region 续传处理
byte[] data;
if (cruuent > 0)
{
fStreamSeek(cruuent, SeekOriginCurrent);
}
#endregion
#region 分割文件上传
for (;cruuent <= length; cruuent = cruuent + byteCount)
{
if (cruuent + byteCount > length)
{
data = new byte[ConvertToInt64((length - cruuent))];
bReaderRead(data, 0, ConvertToInt32((length - cruuent)));
}
else
{
data = new byte[byteCount];
bReaderRead(data, 0, byteCount);
}
try
{
hostURL = tmpURL + "&action=upload" + "&filename=" + fileName + "&userid=" + userID + "&npos=" + cruuentToString();
//hostURL = tmpURL + DateTimeNowToString("yyyyMMddHHmmssfff") + "txt";
byte[] byRemoteInfo = WebClientObjUploadData(hostURL, "POST", data);
string sRemoteInfo = SystemTextEncodingDefaultGetString(byRemoteInfo);
// 获取返回信息
if (sRemoteInfoTrim() != "")
{
sMsg = sRemoteInfo;
break;
}
}
catch (Exception ex)
{
sMsg = exToString();
break;
}
}
#endregion
}
catch (Exception ex)
{
sMsg = sMsg + exToString();
}
try
{
bReaderClose();
fStreamClose();
}
catch (Exception exMsg)
{
sMsg = exMsgToString();
}
GCCollect();
return sMsg;
}
#endregion
不知道你说的本地路是服务器上的还是客户上的不过都可以获得 有点乱,自己整理了。呵呵。
<%//上传文件 需要 common-fileupload 组件/String up = requestgetParameter(up);
if(up!=null&&upequals(true)){try{String temp = c:\\; //临时目录
String strUp = requestgetParameter(path); //上传目标地址
if(strUp!=null&&!strUpequals()){
strUp = new String(strUpgetBytes(ISO-8859-1), GB2312);}DiskFileUpload fu = new DiskFileUpload();
fusetSizeMax(102410241024); // 设置允许用户上传文件大小,单位:字节
fusetSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:字节
fusetRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
//开始读取上传信息
List fileItems = fuparseRequest(request);
Iterator iter = fileItemsiterator(); // 依次处理每个上传的文件
while(iterhasNext()) {
FileItem item = (FileItem) iternext();// 忽略其他不是文件域的所有表单信息
if(!itemisFormField()){
String name = itemgetName(); //获取上传文件名,包括路径
name = namesubstring(namelastIndexOf(\\)+1);//从全路径中提取文件名
long size = itemgetSize();
if((name==null||nameequals()) && size==0)continue;Systemoutprintln(userIp+:上传文件:+name+到+strUp);//输出上传文件信息
File fNew= new File(strUp, name);
itemwrite(fNew);
message = message + <font color=blue文件 <b+itemgetName()+</b 上传成功!</font;}}}catch(Exception ex){
message = message + <font color=red文件上传失败!</font;}}/%
以上就是关于java 怎么获取web根目录全部的内容,包括:java 怎么获取web根目录、在jsp当中定义String path = request.getContextPath(); 点击request查询信息时找不到路径,、如何获取文件的绝对路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)