【问题标题】:Java io library: What is the difference between File.toString() and File.getPath()Java io 库:File.toString() 和 File.getPath() 有什么区别
【发布时间】:2015-01-29 03:58:36
【问题描述】:

...因为看起来两者都返回相同的字符串 - 看看这个 Scala 代码:

scala> val f = new File("log.txt")
scala> f.getPath
// res6: String = log
scala> f.toString
// res7: String = log

【问题讨论】:

    标签: java scala jvm


    【解决方案1】:

    toString() 方法在所有 Java 类上定义。它用于调试目的,除非用户明确定义,否则不能依赖于向用户显示之外的任何其他内容。

    实际上,版本之间的输出并没有真正改变,在许多情况下,您可以有理由相信它会是您想要的,但是,原则上,您应该避免toString() 的任何使用,而不是向用户打印内容。

    这就是getPath() 存在的原因。 这个方法有一个定义明确的输出值,它也保证被采用String表示路径的方法接受

    因此,如果您要在内部使用该路径,请使用getPath()。如果您要打印它作为调试帮助,请使用toString()

    【讨论】:

      【解决方案2】:

      它们是相同的。请参阅javadocs。直接引用链接:

      getPath()
          Converts this abstract pathname into a pathname string.
      
      toString()
          Returns the pathname string of this abstract pathname. 
          This is just the string returned by the getPath() method.
      

      【讨论】:

        【解决方案3】:

        区别在于您应该在哪种情况下使用其中一种。 getPath 方法将始终返回文件路径的字符串表示形式。因此,如果这是您想要的(将文件路径传递给另一个方法等),您应该调用该方法。

        但是,如果您想将文件转换为文本演示文稿(可能用于记录),请使用toString 方法(see this question as well)。我之所以这么说是因为如果您使用toString 方法,而您应该使用getPath 方法,并且如果toString 实现发生变化(可能也显示文件大小),那么您的代码将会中断。

        【讨论】:

          【解决方案4】:

          java.io.File 类的 toString() 方法被覆盖为只调用 getPath(),因此它们将返回相同的结果。

          读完这里的源码就很清楚了:toString()

          【讨论】:

            【解决方案5】:

            如果你看 java.io.file toString 函数实际上调用了路径的 getter。

            public String toString() {
                return getPath();
            }
            

            【讨论】:

              猜你喜欢
              • 2018-02-20
              • 1970-01-01
              • 1970-01-01
              • 2011-04-22
              • 1970-01-01
              • 2021-10-21
              • 1970-01-01
              • 2014-01-22
              • 2011-04-20
              相关资源
              最近更新 更多