我想从 src/DataTable/中的 IndexBean.java 读取 WebContent/resources/db/中的 models.txt 。我该如何设置
中的文件路径sc = new Scanner(new File(filePath));
我知道我可以通过绝对路径实现这一点,但想知道如何在相对路径中实现。
另一个有趣的事情是: 在IndexBean.java(它是一个Java Bean)中,如果我运行以下代码,我将获得eclipse.exe的路径。如果我在同一个包中的 testFileRead.java 中运行相同的代码,但不是 Java Bean,我将获得应用程序工作区的路径。有人可以解释一下吗?谢谢!
File dir1 = new File("..");
try {
System.out.println("Current dir : " + dir1.getCanonicalPath());
} catch (IOException e1) {
e1.printStackTrace();
}
最佳答案
首先,这些类型的内部文件应该驻留在无法访问的位置,即 WebContent/WEB-INF
中。
你可以获得一个文件系统文件:
File file = request.getServletContext().getRealPath("/resources/db/models.txt");
如果将文件存储为真实资源(在类路径中),则可以使用:
InputStream in = getClass().getResourceAsStream("/db/models.txt");
请指定字符编码:
sc = new Scanner(new File(filePath), "UTF-8");
因此无论是在Windows下开发还是在Linux服务器上部署都使用相同的编码。因为默认编码是依赖于平台的。
<小时/>ServletContext servletContext = (ServletContext)
FacesContext.getCurrentInstance().getExternalContext().getContext();
关于java - 如何在Web应用程序中指定Java Bean中的文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965347/