Java 如何动态获取文件夹路径?

Java 如何动态获取文件夹路径?,java,Java,我已编译文件的文件夹中有一个业务文件夹(e:\Business)。我想在主程序中使用此文件夹。我的主程序位于主文件夹(e:\ProjectFile\main)中 我想动态获取业务文件夹的路径。我使用此状态但不起作用: String loadedClassPath = System.getProperty("user.dir")+System.getProperty("file.separator")+"Business"; File operatorFile = new

我已编译文件的文件夹中有一个业务文件夹(e:\Business)。我想在主程序中使用此文件夹。我的主程序位于主文件夹(e:\ProjectFile\main)中

我想动态获取业务文件夹的路径。我使用此状态但不起作用:

String loadedClassPath = System.getProperty("user.dir")+System.getProperty("file.separator")+"Business";

            File operatorFile = new File(loadedClassPath);
            URL operatorFilePath = operatorFile.toURL();          
            URL[] operatorFilePaths = new URL[]{operatorFilePath};
            ClassLoader operatorsClassLoader = new URLClassLoader(operatorFilePaths);
            Class[] operatorClass = new Class[]{ operatorsClassLoader.loadClass("Plus"), operatorsClassLoader.loadClass("Minus"),operatorsClassLoader.loadClass("Multiply") , operatorsClassLoader.loadClass("Divide") }; 
我认为这部分不正确:

String loadedClassPath = System.getProperty("user.dir")+System.getProperty("file.separator")+"Business";
有人能帮我吗?

因为“e:\Business”与

  • Java代码的位置
  • 您的主目录(user.dir)
  • 任何其他众所周知的Windows或Java目录
你必须告诉程序它在哪里/是什么

有些选择是:

  • Java程序中的硬代码。不好
  • 作为参数传递给
    main
  • 存储在位于上述目录之一的属性文件中
  • 可能有更多的选项,但选项3非常常见,选项2不太常见,但可能是更好的选择,这取决于具体情况,选项1非常不鼓励


    注意:构造路径/文件名时,请使用
    新文件(父文件、子文件)
    ,或者更好地使用较新的
    路径。get(第一,更多,…)


    “较新”指的是Java 7,意思是自2011年7月28日起,因此不再是那么新了。

    基本上,您不能,除非您打算直接使用绝对路径,否则“业务”文件夹与应用程序文件夹之间几乎没有什么关联。更好的解决方案是将业务文件夹放在一个众所周知的位置,如Windows o上的
    {user.home}\AppData\Local\{Your AppName}
    ,在Maca上的
    {user.home}/Library/ApplicationSupport/{Your AppName}
    ,另一种选择可能是定义一个指向文件夹位置的环境变量并使用
    System.getenv(…)
    要在运行时检索或将其作为参数传递给应用程序,教师说主程序和业务应位于同一驱动器中。如果我更改了驱动器,我的程序应该可以运行仅供参考:我很确定你昨天问过这个问题,一般不鼓励“bump”posts将“bump”文件夹放置在与代码执行相关的位置,然后你可以使用
    user.dir
    并将路径的相对部分添加到其中