tomcat6安装在d:\tomcat6,操作系统在c盘
部署在d:\tomcat6\webapps\root\index.jsp需要读取一个根目录外的文件,文件所在位置是d:\test\test.xml
代码例子如下
-------------------------------------------
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*,java.lang.*,java.io.*"%>
<%
File f = new File("\\test\\test.xml");
InputStreamReader read = new InputStreamReader (new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
out.println(line);
}
%>
---------------------------------------------如果启动方式是使用d:\tomcat\bin\tomcat6.exe,可以成功读取文件
如果是使用系统服务启动tomcat,则无法读取文件读取的要求是不写入具体的盘符,如:File f = new File("d:\\test\\test.xml");不知道是否可以通过配置tomcat启动的参数,来解决这个问题
在网上已经搜索了很久,也没有看到一个满意的答案
特来请教各位高手
部署在d:\tomcat6\webapps\root\index.jsp需要读取一个根目录外的文件,文件所在位置是d:\test\test.xml
代码例子如下
-------------------------------------------
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*,java.lang.*,java.io.*"%>
<%
File f = new File("\\test\\test.xml");
InputStreamReader read = new InputStreamReader (new FileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
out.println(line);
}
%>
---------------------------------------------如果启动方式是使用d:\tomcat\bin\tomcat6.exe,可以成功读取文件
如果是使用系统服务启动tomcat,则无法读取文件读取的要求是不写入具体的盘符,如:File f = new File("d:\\test\\test.xml");不知道是否可以通过配置tomcat启动的参数,来解决这个问题
在网上已经搜索了很久,也没有看到一个满意的答案
特来请教各位高手
ServletContext servletContext = this.getServlet().getServletContext();
String filePath = servletContext.getRealPath("WEB-INF");
File file = new File(filePath+"/"+text.xml);
FileInputStream in = new FileInputStream(file);
这样才对 呵呵 弄错了
resin无论是直接启动,还是服务启动
都可以读取d:\test\test.xml
并且写法也只是需要File f = new File("\\test\\test.xml"); 因为这段代码是win下测试,Linux下运行,所以盘符在此处直接定义或是作为系统变量是会有问题的
看来tomcat和resin对于路径的判决还是有些不同
不知道resin是如何实现这个功能的
由于这个项目是php和java的混合项目,所以类似的xml配置文件没有部署在web-inf下,而是在外部一个文件夹呢,不过luoyuxuejava说的这个方法的确也挺好的
servletContext.getRealPath("WEB-INF"); 方法中传的参数得变一下;
还有就是你项目中所要读取的文件都得放在项目里面,不然你把项目部署到其他机器上就找不到文件了
"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions "-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOME%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed" --StartMode jvm --StopMode jvm修改为
"%EXECUTABLE%" //IS//%SERVICE_NAME% --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop --StartPath %cd% --StopPath %cd%:\这样就算是tomcat由服务从C盘启动,程序也会读取D盘的文件,无需设定盘符,也无需程序判断绝对路径