如何在web应用程序的javabean中指定文件路径?

jdgnovmf  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(432)

我想从src/datatable/中的indexbean.java读取webcontent/resources/db/中的models.txt。如何设置文件路径

  1. sc = new Scanner(new File(filePath));

我知道我可以通过绝对路径来实现,但我想知道如何通过相对路径来实现。

另一件有趣的事情是:在indexbean.java(它是一个Javabean)中,如果我运行以下代码,我将得到eclipse.exe的路径。如果我在testfileread.java中的同一个包(不是JavaBean)中运行相同的代码,我将获得应用程序工作区的路径。有人能解释一下吗?谢谢!

  1. File dir1 = new File("..");
  2. try {
  3. System.out.println("Current dir : " + dir1.getCanonicalPath());
  4. } catch (IOException e1) {
  5. e1.printStackTrace();
  6. }
pb3skfrl

pb3skfrl1#

我认为@joop eggen已经为你提出了最好的解决方案。但是,有时可以将环境变量设置为文件路径,并在不同的环境中推动代码时更改它。

  1. String dir = System.getProperty("user.dir");
hjzp0vay

hjzp0vay2#

首先,这类内部文件应该位于不可访问的位置,即 WebContent/WEB-INF .
你可以得到一个文件系统文件:

  1. File file = request.getServletContext().getRealPath("/resources/db/models.txt");

如果将文件存储为实际资源(在类路径中),则可以使用:

  1. InputStream in = getClass().getResourceAsStream("/db/models.txt");

请指定字符编码:

  1. sc = new Scanner(new File(filePath), "UTF-8");

因此,无论是在windows下开发还是在linux服务器上部署,都使用相同的编码。因为默认编码依赖于平台。

  1. ServletContext servletContext = (ServletContext)
  2. FacesContext.getCurrentInstance().getExternalContext().getContext();
展开查看全部

相关问题