String file = "haha.txt";
String path = session.getServletContext().getRealPath("");
try {
FileWriter outfile = new FileWriter( path + "/" + file);
System.out.println(path);
outfile.write(“HAHAHA!!“);
outfile.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是无论怎样尝试都做不出来,明明同样的代码当作Java Application跑就完全没有问题。问了大神,大神说这种事情是做不到的。本着钻研的精神,努橙决定仔细研究下。查了半天资料,找到一个在servlet中取得当前目录的方法。(https://community.oracle.com/thread/1849683)
先在servlet中get到session:
HttpSession session = request.getSession();
然后找当前目录:
String path = session.getServletContext().getRealPath("");
最后s.o.p出来的path长这样(什么鬼!):
/Volumes/doc/workspace 1/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/task14
和真正的本项目的目录(/Volumes/doc/workspace 1/task14)是两个样子嘛!所以才写不过去嘛!把path hardcode 成随便一个已知的目录,就完全可以新建文件!继续本着钻研的精神,努橙决定把task14这个项目部署到tomcat上,看看这次会不会可以写过去。于是乎,在/Users/.../Downloads/apache-tomcat-8.0.14/webapps/task14这个目录下面成功找到了haha.txt。以后可以研究一下webapp是怎么在eclipse的tomcat server上跑的。哈哈!
没有评论:
发表评论