【问题标题】:How can I create a file with FileWriter within my project file using relative path如何使用相对路径在我的项目文件中使用 FileWriter 创建文件
【发布时间】:2014-01-17 19:52:34
【问题描述】:

我正在使用 NetBean 和 glassFish 开发 jsp 网站及其服务器。 在服务器端,我有一个使用 FileWriter 生成文本文件的 java 类:

FileWriter writer = new FileWriter("the-file-name.txt", true);

但是我发现这个文件保存在glassfish的目录下:

C:\Program Files (x86)\glassfish-4.0\glassfish\domains\domain1\config

另外,通过代码检查路径:

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current relative path is: " + s);

结果也和上面的路径一样。

如何获取正确的相对路径,是项目的路径还是这个java文件的路径?

【问题讨论】:

  • 更改为“.\some_folder\the-file-name.txt”?
  • 这个类是由 web.xml 中的一个监听器调用的:data.StartUpListener 我想这可能是为什么我得到了错误的相对路径

标签: java netbeans glassfish


【解决方案1】:

这将获取您正在运行的类/jar 的位置:

String path = System.getProperty("user.dir");

字符串路径包含绝对目录,使用类似
path = path.replace("jars", ""); 的东西,您可以找到应用程序的根目录。例如,如果 jar 在目录 C:\Program Files\Example\jars 中,这会将路径设置为
C:\Program Files\Example\

【讨论】:

  • 我也尝试过这种方法,但我也得到了相同的路径:C:\Program Files (x86)\glassfish-4.0\glassfish\domains\domain1\config 正如我在上一条评论中所说,我认为这是因为该方法被 web.xml 中的侦听器调用
  • 一定是这样,因为这对我来说效果很好。调用一个 via 方法怎么样,或者任何你想调用的方法,所以你基本上封装了获取路径的 main 方法
【解决方案2】:

在 Servlet 中

String filePath = getServletContext().getRealPath("/").replace("\\", "/");

在 JSP 中

String filePath = session.getServletContext().getRealPath("/").replace("\\", "/");

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2019-08-31
    相关资源
    最近更新 更多