如何将System.getProperty("user.dir")更改为项目工作区

Sha*_*ron 7 java

我尝试在我的代码中逐行读取.txt文件,我将它放在/src/目录下,当我使用测试用例或静态void main运行时,路径输出是正确的.但是,当我使用Tomcat服务器运行应用程序时,应用程序根路径指向我下载Eclipse的位置 - D:\eclipse\...而正确的路径应该是D:\workspace\myproject\src\.然后,当然,它永远找不到文件.

以下是我的代码:

String workDir = System.getProperty("user.dir");
String file = "numFile.txt";
File myFile = new File(workDir + file);
String userPath = myFile.getPath();
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

  1. (这可能是愚蠢的)我们通常应该在哪里放置文本文件?
  2. 如何更改[ System.getProperty("user.dir");],它将指向我的项目工作区?

谢谢!

沙龙


关于你的回复:

添加以下参数-Duser.home ='Your Path'确保在系统变量的开头添加-D.当您在使用tomcat服务器时打开启动配置时,可以将此变量放在参数选项卡下提供的VM参数框中.

我找不到你在说的地方.它在Eclipse或Tomcat目录中吗?

谢谢

Eng*_*uad 9

尝试 File myFile = new File(workDir, file);


Ste*_*n C 5

简而言之,您不能在 Java 中更改正在运行的应用程序的当前工作目录;请参阅在 Java 中更改当前工作目录?

设置该user.dir属性将不起作用,因为这不会影响操作系统在解析应用程序路径名时使用的实际当前目录。

-Duser.dir在命令行上设置也不起作用。相反,您必须:

  • 如果您使用脚本启动,cd在运行应用程序之前到相关目录,
  • 如果您使用 a 启动ProcessBuilder,请使用该directory(File)方法设置工作目录,或者
  • 如果您使用的是 Eclipse 启动器,请在启动配置中设置“工作目录”。

最后,您要做的是(IMO)一个坏主意:

  • 有些人在假设 Tomcat 的当前目录是默认位置的情况下编写 Tomcat 和 webapp 配置文件;例如$CATALINA_HOME/bin。(这是错误的......但你的黑客会破坏它。)
  • 当您的应用程序投入生产时,您不会希望回到某些开发沙箱。

更好的方法是按照@Eng.Fouad 的回答做一些事情。