Java io库:File.toString()和File.getPath()之间有什么区别

时间:2015-01-29 03:58:37

标签: java scala jvm

...因为它们似乎都返回相同的字符串 - 看看这个Scala代码:

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

5 个答案:

答案 0 :(得分:3)

{em}所有 Java类都定义了toString()方法。它用于调试目的,除非用户明确定义,否则不能依赖于显示给用户以外的任何内容。

在实践中,输出在版本之间并没有真正改变,在很多情况下,你可以合理地确信它会是你想要的,但是,原则上,你应该避免除了向用户打印外,还可以使用toString()

这就是getPath()存在的原因。 方法具有非常明确定义的输出值,通过采用表示路径的String的方法,也可以保证接受

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

答案 1 :(得分:1)

他们是完全相同的。请参阅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.

答案 2 :(得分:1)

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

一旦您在此处阅读来源,就会非常清楚:toString()

答案 3 :(得分:0)

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

但是如果你想将文件转换为文本表示(可能用于记录),请使用toString方法(see this question as well)。我说这是因为如果您使用toString方法,那么您应该使用getPath方法,并且toString实现更改(也可能显示文件大小)那么你的代码就会崩溃。

答案 4 :(得分:0)

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

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