java获取文件路径

标签 java file jsp path

我有一个 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/

相关文章:

java - 缓冲区字节数组如何在流式传输时不断填充?

java - 无法从 Servlet 到 JSP 获取错误消息(验证)

javascript - 处理JSP页面时发生异常 - 类型异常报告

javascript - 将 VXML 应用程序根文档变量传递/公开给 JSP

java - 在 MouseListener 中确定单击的 JPanel 组件。事件处理

java - TabHost 出现水平滚动问题

java - 如何扩展testNG?

java - Spring Boot 中的嵌套映射不加载静态内容

c - 从 csv 文件读取并分成 C 中的变量

git - 列出所有未被 .gitignore 忽略的文件