问题描述
||
我尝试逐行读取代码中的.txt文件,将其放在just0ѭ目录下,当我使用测试用例或静态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();
因此,我的问题是:
(这可能很愚蠢)我们通常应该在哪里放置文本文件?
如何更改[System.getProperty(\"user.dir\");
],使其指向我的项目工作区?
谢谢!
沙龙
关于您的回复:
添加以下参数-Duser.home = \'Your Path \'确保在系统变量的开头添加-D。当使用tomcat服务器打开“启动配置”时,可以将此变量放入“参数”选项卡下提供的“ VM参数”框中。
我找不到您正在谈论的地方。是在Eclipse还是Tomcat目录中?
谢谢
解决方法
试试
File myFile = new File(workDir,file);
, 简短的答案是,您无法在Java中更改正在运行的应用程序的当前工作目录。请参见在Java中更改当前工作目录?
设置“ 6”属性将不起作用,因为这不会影响OS在解析应用程序的路径名时使用的实际当前目录。
在命令行上设置ѭ7也不起作用。相反,您必须:
如果要使用脚本启动,请在运行应用程序之前将ѭ8转到相关目录,
如果使用ProcessBuilder
启动,请使用directory(File)
方法设置工作目录,或者
如果您使用的是Eclipse启动器,请在启动配置中设置\“工作目录\”。
最后,您想要做的是(IMO)一个坏主意:
有些人在假定Tomcat的当前目录是默认位置的情况下编写Tomcat和webapp配置文件。例如$CATALINA_HOME/bin
。 (这是错误的……但是您的hack会破解它。)
当您的应用程序投入生产时,您将不希望再提到一些开发沙箱。
更好的方法是按照@ Eng.Fouad的答案进行操作。
, 好!我知道了!
是,
File myFile = new File(workDir + \"/\" + file);
是要走的路。
然后在Eclipse IDE中编辑tomcat参数。 (运行->运行配置...-> Apache Tomcat-> [单击] Tomcat vX Server->在右侧屏幕上,单击\“ Argument \”->工作目录部分->我更改为Other并指定我的实际工作方式目录。)
即使我不是通过eclipse IDE运行tomcat,也很奇怪,但是Dos cmd甚至部署到服务器上,它仍然将工作目录应用为D:\\ Eclipse。但是无论如何,更改工作目录仍然有效。
, 要从类路径的根目录读取文件,请使用(Eclipse自动将任何非Java文件从src复制到类):
this.getClass().getClassLoader().getResourceAsStream(\"filename.txt\");
因此,您根本不必弄乱当前文件夹。
, 尽量不要更改系统属性,而是在系统属性中再添加一个参数。
例如添加以下参数arguments14ѭ确保在系统变量的开头添加add15 add。当使用tomcat服务器打开“启动配置”时,可以将此变量放入“参数”选项卡下提供的“ VM参数”框中。
并且,如果您要通过某些主要方法运行相同的代码,请在运行配置中添加vairable,因为这将保持代码的准确性。