对位于我的服务器中的文件使用文件 API 方法
我创建了一个小应用程序,可以浏览我的文件系统以将其创建并显示为树(JTree)。现在我想对服务器上的文件执行相同的操作。 我有一个 Apache Tomcat 服务器。 我想做的是这样的:
File dir = new File(new URI("file://localhost:8084/myapp/Dir"));
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
这只是一个例子,但我想使用 java File API。
当我将此代码放入 servlet 中时,出现此错误:
11 mai 2011 10:02:15 org.apache.catalina.core.StandardWrapperValve invoke "Servlet.service()" pour la servlet tests a généré une 异常 java.lang.IllegalArgumentException:URI 具有权限组件 在 java.io.File.
我不知道这是什么意思。
我还尝试过 File dir = new File("Dir") ;
和 File dir = new File("web/Dir")
甚至 File dir =新文件(新URI(http://localhost:8084/myapp/Dir
));
但没有找到 Dir 。我不明白,我要疯了(嗯……抱歉)。
当我在网络浏览器上输入 http://localhost:8084/myapp/Dir
时,会显示 Dir 的内容。所以 Dir 确实位于 http://localhost:8084/myapp/
我真的需要一些备份。 提前致谢 。
I've created a little app that browse my file system to create and display it as a tree (JTree) . Now I want to do the same for my files present on my server .
I have an Apache Tomcat server .
What I want to do is something like :
File dir = new File(new URI("file://localhost:8084/myapp/Dir"));
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
this is a just an exemple but I want to use java File API .
I am getting this error when I put this code in a servlet :
11 mai 2011 10:02:15 org.apache.catalina.core.StandardWrapperValve invoke "Servlet.service()" pour la servlet tests a généré une exception
java.lang.IllegalArgumentException: URI has an authority component
at java.io.File.<init>(File.java:385)
I dont know what does this means.
I've also tried File dir = new File("Dir") ;
and File dir = new File("web/Dir")
and even File dir = new File(new URI(http://localhost:8084/myapp/Dir
));
but Dir is not found . I dont get it and I am going mad (hum..sorry) .
when I type http://localhost:8084/myapp/Dir
on my web browser the content of Dir is displayed .So Dir is really on http://localhost:8084/myapp/
I really really need some backup here .
Thanks in advance .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设您的 Web 应用程序部署为未打包的 War,那么您可以在
ServletContext
对象上使用getRealPath()
来获取给定 Web 应用程序路径的真实文件系统路径。因此,从 servlet 内部:
请参阅 javadoc。
请注意,这不是一个好的做法,并且不会在任何在运行之前不将其 WAR 解压到文件系统上的应用程序服务器上工作(例如 Google App Engine)。
Assuming that your webapp is deployed as an unpacked war, then you can use
getRealPath()
on theServletContext
object to obtain the real filesystem path for a given webapp path.So from inside your servlet:
See javadoc.
Note that this isn't good practice, and will not work on any appserver which doesn't unpack its WARs onto the filesystem before running it (e.g. Google App Engine).