<%=session.getServletContext().getRealPath("/") %>
<%
String path= session.getServletContext().getRealPath("/");
FileOutputStream file = new FileOutputStream(path+"\\testingfile.txt");
%>
上面的代码是我运行此页面后的jsp代码,它将显示以下输出。
C:\Users\Stark\Documents\Eclipse IDE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Demo\
为什么我要走这条路?而不是我想要获得我需要的以下路径...
C:\Users\Stark\Documents\Eclipse IDE\Demo
该如何解决?我需要这个项目位置来将文件上传到这个位置,所以请帮助我!
答案 0 :(得分:1)
获得“奇怪”路径的原因很简单-您正在使用Eclipse。 在Eclipse上运行应用程序时,Eclipse端将创建新路径并在其中运行您的应用程序。这就是为什么“ getRealPath(“ /”)“为您提供奇怪的路径的原因,因为您的应用程序现在正在一个临时文件夹上运行。
Eclipse为什么要这样做?这就是我的想法
那我该如何解决这个问题?
我建议您使用“属性”类来设置上传路径。这样,您就可以将URL设置与逻辑分开,这样您的代码将变得易于维护。这样您就不会遇到任何意外的“环境”错误,因为您的设置值将由您的输入来固定。
这里是使用“属性”的固定代码。
<%
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// load a properties file
prop.load(input);
// get the property for upload path
String path=prop.getProperty("path.upload");
FileOutputStream file = new FileOutputStream(path+"\\testingfile.txt");
//TODO:rest of your logic codes will come here.
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
%>
您还必须创建“ config.properties”文件。这是文件的内容。
path.upload=C:\Users\Stark\Documents\Eclipse IDE\Demo
希望我的回答对您有所帮助。