【问题标题】:How to give relative path for my file in java file?java - 如何在java文件中为我的文件提供相对路径?
【发布时间】:2013-05-11 03:01:23
【问题描述】:

我正在为我的java应用程序(Servlet,jsp)使用tomcat服务器。在我的servlet页面中调用一个java类函数。实际上java文件是单独编写的,我将调用其中编写的函数。在函数中,我必须出于某种目的读取一个配置(用户定义)文件。所以,我为此使用 File 类。

但是,这里我必须给出配置文件的相对路径(用户定义)。因为,现在我在本地 Windows 服务器上运行这个应用程序。但是我的实时服务器是基于 Linux 的。所以,文件路径被改变了在linux中。

File f1=new File("D:\tomcat\webapp\myapp\WEB-INF\src\point_config.txt");  -- windows
File f1=new File("D:\ravi\tomcat\webapp\myapp\WEB-INF\src\point_config.txt");  -- linux

所以,我必须给出 windows 和 linux 机器通用的文件的相对路径。

有没有办法做到这一点?

请指导我摆脱这个问题?

【问题讨论】:

  • 该文件是在您的类路径中还是直接在 web-inf 下?

标签: java jsp jakarta-ee tomcat


【解决方案1】:

将您的配置文件放在您的 webapp WEB-INF/classes 文件夹下,并在代码中像这样阅读

InputStream is= 
   YourClassName.class.getResourceAsStream("point_config.txt");

【讨论】:

    【解决方案2】:

    配置文件的路径指向WEB-INF文件夹

    tomcat\webapp\myapp\WEB-INF\src\point_config.txt
    

    WEB-INF 中的任何内容都受到保护,一旦 Web 应用程序启动,就无法由用户定义。如果您打算从文件系统中读取用户定义的配置文件,请使用像 common configuration API 这样的 API。

    如果您想坚持将文件保存在 WEB-INF 文件夹中,请改用Class.getResourceAsStream() 方法获取配置。不过,这不会使配置成为用户定义的。

    【讨论】:

    • 您确定应用程序无法访问 WEB-INF 内部吗?您能否提供有关保护声明的来源?我知道用户无法在 WEB-INF 中访问文件,但我相信应用程序可以。
    • @KevinBowersox 不,应用程序可以通过Class.getResourceAsStream() 到达 WEB-INF 内部。用户无法到达 WEB-INF 内部。我提到要强调 WEB-INF 中的属性并不是真正的用户定义的。
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2014-08-17
    • 2013-10-29
    • 2013-09-06
    • 2012-03-23
    • 1970-01-01
    • 2012-06-19
    • 2013-04-06
    相关资源
    最近更新 更多