我有一个 jsp 页面,其中包含打印给定目录中的所有文件及其文件路径的代码。代码是
if (dir.isDirectory()) { File[] dirs = dir.listFiles(); for (File f : dirs) { if (f.isDirectory() && !f.isHidden()) { File files[] = f.listFiles(); for (File d : files) { if (d.isFile() && !d.isHidden()) { System.out.println(d.getName()+ d.getParent() + (d.length()/1024)); } } } if (f.isFile() && !f.isHidden()) { System.out.println(f.getName()+ f.getParent() + (f.length()/1024)); } } }
问题是它打印了完整的文件路径,从 tomcat 访问时该路径无效。例如,代码吐出以下路径:
/usr/local/tomcat/sites/web_tech/images/scores/blah.jpg
我希望它只打印到/images 的路径,即
/images/scores/blah.jpg
我知道我可以随便处理一个实际的字符串,即拆分它或进行字符串匹配,但是有更简单的方法吗?
谢谢
最佳答案
像 webapp 那样依赖文件系统(即使用绝对路径)并不是好的做法,这会使您的代码的可移植性降低。
您应该将文件保存在resources
目录中,并使用ClassLoader
加载相对于类路径的文件。参见 ClassLoader.getResource()
和 ClassLoader.getResourceAsStream()
.另一种选择是使用 ServletContext.getResource()或 ServletContext.getResourceAsStream() .您可以使用继承的 getServletContext()
获取 servlet 中的 ServletContext
方法。
关于java获取文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702272/