问题描述:
程序中用了一段代码动态在应用根目录下,动态创建一个文件夹,用于存储临时文件,代码如下:
InputStream in=null;
File file = new File(request.getRealPath("/")+ File.separator+"report" + File.separator+"files" + File.separator + filename);
in=new FileInputStream(file);
int i;
while ((i=in.read())!=-1) {
response.getOutputStream().write(i);
}
in.close();在Windows服务器运行正常,但在Lunix服务器下,却无法生成文件夹。
原因分析:
request.getRealPath("/") 在window获取的是服务器的根目录,结尾包含分隔符,
如E:\apache-tomcat-7.0.52\webapps\zj\
在Linux下获取的不含分隔符,如:
/home/ecm/server1/apache-tomcat-7.0.52/webapps
建议:
request.getRealPath() 方法已经不推荐使用,推荐使用 request.getSession().getServletContext().getRealPath("/");
本文介绍了一个关于在不同操作系统(Windows与Linux)下动态创建文件夹的问题案例。通过对比request.getRealPath(/)方法在两种系统中的表现,分析了其在Linux环境下未能正确生成路径的原因,并给出了替代方案。
853

被折叠的 条评论
为什么被折叠?



