提问者:小点点

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


我有一个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上不起作用(特别是给我一个“系统找不到指定的路径”错误)当我将其更改为Intellij时。鉴于我必须将其作为分配提交,并且我不希望我的文件有任何歧义,是否有更“通用”的方法可以尝试,因此我的代码无论如何都可以工作?


共1个答案

匿名用户

如果您检查您的IntelliJ配置,通过单击您正在执行的文件名称的顶部,您可以单击编辑配置,您将看到您可以配置的字段之一,称为“工作目录”。

IntelliJ足够聪明,可以将其设置到/src文件夹之外的项目文件夹中,因为在/src文件夹中写入数据不是很好的做法,该文件夹应该只有源文件,除非它们是您想要使用代码提交的资源。

另一方面,当从cmd执行它时,您的工作目录正是您尝试运行编译程序的地方。执行此操作时,您没有指定您在哪个文件夹中,但很可能您在某个包含类的子文件夹中,这就是您需要执行的原因。

如果您将类打包在.jar文件中,IntelliJ的方式应该可以工作。如果您使用java-jarmyjarfile. jar运行.jar文件和./data文件夹位于同一级别,那么它就可以工作。