我有一个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时。鉴于我必须将其作为分配提交,并且我不希望我的文件有任何歧义,是否有更“通用”的方法可以尝试,因此我的代码无论如何都可以工作?
如果您检查您的IntelliJ配置,通过单击您正在执行的文件名称的顶部,您可以单击编辑配置,您将看到您可以配置的字段之一,称为“工作目录”。
IntelliJ足够聪明,可以将其设置到/src
文件夹之外的项目文件夹中,因为在/src
文件夹中写入数据不是很好的做法,该文件夹应该只有源文件,除非它们是您想要使用代码提交的资源。
另一方面,当从cmd
执行它时,您的工作目录正是您尝试运行编译程序的地方。执行此操作时,您没有指定您在哪个文件夹中,但很可能您在某个包含类的子文件夹中,这就是您需要执行…
的原因。
如果您将类打包在.jar
文件中,IntelliJ的方式应该可以工作。如果您使用java-jarmyjarfile. jar
运行.jar
文件和./data
文件夹位于同一级别,那么它就可以工作。