- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我创建这样的文件,我会因为以下行为而堆积一段时间:
new File("");
然后它将指向项目工作目录,在我的例子中是 C:/project/
。如果创建这样的文件:
new File("image");
然后它将相对于项目目录,在我的例子中是C:/project/image/
。一切都很好,但是如果我使用 new File(File Parent, String childName)
构造函数创建文件,如下所示:
new File(new File(""), "image");
然后它将指向C:/image/
,我从根目录开始。我发现这是有记录的行为:
If
parent
is the empty abstract pathname then the newFile
instance is created by convertingchild
into an abstract pathname and resolving the result against a system-dependent default directory.
但是为什么呢?有什么理由吗?还是“只是因为”?为什么如果我提供指向当前目录的new File("")
,作为父目录,我将收到具有root的子目录目录作为父目录?
最佳答案
source code显示了为什么存在差异:
/**
* The FileSystem object representing the platform's local file system.
*/
private static final FileSystem fs = DefaultFileSystem.getFileSystem();
// Snip.
public File(File parent, String child) {
if (child == null) {
throw new NullPointerException();
}
if (parent != null) {
if (parent.path.equals("")) {
this.path = fs.resolve(fs.getDefaultParent(),
fs.normalize(child));
} else {
this.path = fs.resolve(parent.path,
fs.normalize(child));
}
} else {
this.path = fs.normalize(child);
}
this.prefixLength = fs.prefixLength(this.path);
}
对比
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}
即如果您通过new File("")
作为parent
参数,FileSystem
解析路径时会考虑 的默认父级。
所有方法FileSystem.getDefaultParent
, FileSystem.resolve
和 FileSystem.normalize
是抽象的,因此具体行为不是立即显而易见的;但是,假设不同的代码路径将导致不同的行为并非没有道理。
关于java - 为什么 new File(File Parent, String childName) 表现不明显?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066657/
通常当我请求线程转储时,系统性能不佳的症状很容易解释;也就是说,通常我会看到许多线程显然正在等待一个已被获取但未被另一个释放的监视器。 在这种情况下,我有很多线程在等待监视器 (0x965ad100)
C:\Users\shagy\Desktop\3RD YEAR 2ND SEMESTER\SPM\Newfolder\SPM-SMS>npm start npm ERR! path C:\Users\
我是一名优秀的程序员,十分优秀!