Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不建议将硬编码的绝对路径名传递给文件对象构造函数文件(字符串)_Java_File_Constructor_Static Analysis_Hardcoded - Fatal编程技术网

Java 为什么不建议将硬编码的绝对路径名传递给文件对象构造函数文件(字符串)

Java 为什么不建议将硬编码的绝对路径名传递给文件对象构造函数文件(字符串),java,file,constructor,static-analysis,hardcoded,Java,File,Constructor,Static Analysis,Hardcoded,我使用File(stringpathname)在Java中创建一个File对象,其中pathName是文件的绝对路径。 虽然从功能的角度来看,这工作得很好,但它经常以静态分析缺陷告终。 建议在文件(字符串路径名)上使用构造函数文件(文件父级,字符串子级)有什么具体原因吗?作为一般经验法则,硬编码绝对路径会降低程序的灵活性。考虑一个配置文件位于“代码> /Ur/Stuty/MyApp/MyApp.CONF”-如果最终用户想要安装您的应用程序以外的其他地方,而不是 /Ur/Stuts呢?使用这样的绝

我使用
File(stringpathname)
在Java中创建一个File对象,其中
pathName
是文件的绝对路径。 虽然从功能的角度来看,这工作得很好,但它经常以静态分析缺陷告终。
建议在
文件(字符串路径名)
上使用构造函数
文件(文件父级,字符串子级)
有什么具体原因吗?

作为一般经验法则,硬编码绝对路径会降低程序的灵活性。考虑一个配置文件位于“代码> /Ur/Stuty/MyApp/MyApp.CONF”-如果最终用户想要安装您的应用程序以外的其他地方,而不是<代码> /Ur/Stuts<代码>呢?使用这样的绝对路径将破坏应用程序


和往常一样,没有一个笼统的说法是100%正确的。如果将此文件放在任何其他位置完全没有意义,只需放弃/取消静态分析工具中的警告。

如果使用绝对路径,则在任何应用程序中 喜欢 D:\

若用户并没有D:驱动器,那个么应用程序将无法创建文件夹。所以我们不应该使用绝对路径。
以上只是一个需要理解的示例。

因为当您在其他地方使用代码时,该文件可能不会在该特定文件夹中。假设在代码可能被移植到的不同平台上,文件系统结构保持不变,那么使用文件(字符串父级、字符串子级)构造函数是否更安全,或者这也会被标记为潜在缺陷吗?建议这样做吗?哪里您的索赔依据是什么?如果我们在一个程序中使用文件(字符串路径名)构造函数10次,那么出于同样的原因,将有10个静态分析缺陷。如果我们只使用文件(字符串路径名)作为第一个文件对象,然后使用文件(文件父对象、字符串子对象)作为剩余对象,那么这个数字可以从10减少到1。“静态分析缺陷”不是Java语言规范或Javadoc的一部分,而Javadoc是唯一的规范性引用。它们来自一些你没有指定的工具。这些东西总是过于挑剔。我不用它们。