【发布时间】:2017-01-09 02:48:31
【问题描述】:
File.java 使用变量为:
private final transient int prefixLength;
并且说,这是“抽象路径名的前缀”。
File.java 也有一个构造函数:
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}
这里是使用 fs.prefixLength() 方法设置变量 prefixLength。
变量 fs 在 File.java 中定义为:
private static final FileSystem fs = DefaultFileSystem.getFileSystem();
DefaultFileSystem 类的getFileSystem() 方法返回UnixFileSystem 对象。所以 fs.prefixLength() 方法实际上调用了 UnixFileSystem 的 prefixLength() 方法。 UnixFileSystem的prefixLength()方法实现为:
public int prefixLength(String pathname) {
if (pathname.length() == 0) return 0;
return (pathname.charAt(0) == '/') ? 1 : 0;
}
表示此方法将仅返回 0 或 1,具体取决于路径名的长度或路径名的第一个字符。
我的疑问是: 它是什么类型的长度,它的意义是什么?
【问题讨论】:
标签: java file filesystems pathname