java - 如何在Web应用程序中指定Java Bean中的文件路径?

标签 java managed-bean

我想从 src/DataTable/中的 IndexBean.java 读取 WebContent/resources/db/中的 models.txt 。我该如何设置

中的文件路径
sc = new Scanner(new File(filePath));

我知道我可以通过绝对路径实现这一点,但想知道如何在相对路径中实现。

capture

另一个有趣的事情是: 在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/

相关文章:

java - 创建新 Excel 文件时如何初始化单元格 (Apache POI)

java - Selenium GRID : org. openqa.selenium.SessionNotCreatedException:无法创建新服务:ChromeDriverService

javascript - 如何在 JavaScript 中触发隐藏的 JSF commandLink?

java - JSF 2.0 管理用户

logging - 无法使用 CDI 注入(inject) log4j - WELD-001408 : Unsatisfied dependencies for type Logger with qualifiers @Default

java - 在 Eclipse 中创建数组

java - 改造 2/OkHttp : Cancel all running requests

Java 和对象初始化多个资源 - 有更好的方法吗?

java - 托管 Bean 注销不起作用

java - 无法使用托管 Bean 部署 JSF