Intellij Idea Intellij和cmd的java项目相对路径是否不同?

50few1ms  于 2023-01-08  发布在  Java
关注(0)|答案(1)|浏览(154)

我有一个java任务,在特定的点上,我们必须创建一个新的文件夹,并在那里写入一些文本文件。问题是,当在Intellij上测试我的代码时,它工作得很好,但当在cmd上测试时,我需要对它做一点点修改吗?
我的项目结构:

.../project/src/greedycomparisons  // greedycomparisons is the file where I'm creating the dir from
.../projct/data                    // the directory I want to create, to have my text files in

更具体地说:
我尝试从src文件夹中的一个文件创建一个新的子目录,因此,我首先尝试的是:

File directory = new File("./data/");
if (!directory.mkdir()) dosth;    // nothing happens on first call
/* making the String I want as my file's name, say string */
File file = new File(directory, string);

这在Intellij上运行良好,在我想要的地方创建子目录(以及以后的文件)。然后,同样地,我尝试从src文件夹中的另一个文件访问我在那里创建的文件,方法是再次在我尝试访问的文件名之前使用./data,这在Intellij上也能正常工作。
但是当我在cmd上测试这个时,我需要将目录名更改为"../data"才能使代码工作,而这反过来 * 在Intellij上不起作用 *(特别是给我一个"系统找不到指定的路径"的错误),当我把它改变成这样。鉴于我必须提交它作为一个任务,我不希望我的文件有任何歧义,有没有什么更"通用"的东西可以让我尝试,这样我的代码就可以正常工作了?

cclgggtu

cclgggtu1#

如果你检查你的IntelliJ配置,点击顶部你正在执行的文件名,你可以点击编辑配置,你会看到一个你可以配置的字段,称为“工作目录”。
IntelliJ非常聪明,可以将其设置到/src文件夹之外的项目文件夹中,因为在/src文件夹中写入数据不是一个好的做法,因为/src文件夹中应该只有源文件,除非它们是您希望与代码一起提交的资源。
另一方面,当从cmd执行时,工作目录就是你试图运行编译后的程序的地方,你没有指定你在哪个文件夹中,但是很可能你在某个包含类的子文件夹中,这就是为什么你需要执行..
如果你把你的类打包成.jar文件,IntelliJ的方法应该可以工作,如果你用java -jar myjarfile.jar运行你的.jar文件,并且./data文件夹在同一层,那么它就可以工作。

相关问题