DirectoryNode.java
net.minecraft.util.filefix.virtualfilesystem.DirectoryNode
信息
- 全限定名:net.minecraft.util.filefix.virtualfilesystem.DirectoryNode
- 类型:final class
- 包:net.minecraft.util.filefix.virtualfilesystem
- 源码路径:src/main/java/net/minecraft/util/filefix/virtualfilesystem/DirectoryNode.java
- 起始行号:L12
- 继承:Node
- 职责:
TODO
字段/常量
childNodes- 类型:
Map<String,Node> - 修饰符:
private final - 源码定位:
L13 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
DirectoryNode(CopyOnWriteFSPath path) @ L15
- 构造器名:DirectoryNode
- 源码定位:L15
- 修饰符:package-private
参数:
- path: CopyOnWriteFSPath
说明:
TODO
方法
下面的方法块按源码顺序生成。
public Collection<Node> children() @ L19
- 方法名:children
- 源码定位:L19
- 返回类型:Collection
- 修饰符:public
参数:
- 无
说明:
TODO
public void addChild(Node child) @ L23
- 方法名:addChild
- 源码定位:L23
- 返回类型:void
- 修饰符:public
参数:
- child: Node
说明:
TODO
void removeChild(String name) @ L29
- 方法名:removeChild
- 源码定位:L29
- 返回类型:void
- 修饰符:package-private
参数:
- name: String
说明:
TODO
public Node getChild(String name) @ L33
- 方法名:getChild
- 源码定位:L33
- 返回类型:Node
- 修饰符:public
参数:
- name: String
说明:
TODO
public DirectoryNode directoryByPath(CopyOnWriteFSPath path) @ L37
- 方法名:directoryByPath
- 源码定位:L37
- 返回类型:DirectoryNode
- 修饰符:public
参数:
- path: CopyOnWriteFSPath
说明:
TODO
public FileNode fileByPath(CopyOnWriteFSPath path) @ L45
- 方法名:fileByPath
- 源码定位:L45
- 返回类型:FileNode
- 修饰符:public
参数:
- path: CopyOnWriteFSPath
说明:
TODO
public Node byPath(CopyOnWriteFSPath path) @ L53
- 方法名:byPath
- 源码定位:L53
- 返回类型:Node
- 修饰符:public
参数:
- path: CopyOnWriteFSPath
说明:
TODO
public Node byPathOrNull(CopyOnWriteFSPath path) @ L62
- 方法名:byPathOrNull
- 源码定位:L62
- 返回类型:Node
- 修饰符:public
参数:
- path: CopyOnWriteFSPath
说明:
TODO
代码
final class DirectoryNode extends Node {
private final Map<String, Node> childNodes = new HashMap<>();
DirectoryNode(CopyOnWriteFSPath path) {
super(path);
}
public Collection<Node> children() {
return Collections.unmodifiableCollection(this.childNodes.values());
}
public void addChild(Node child) {
String name = Objects.requireNonNull(child.name());
this.childNodes.put(name, child);
child.setParent(this);
}
void removeChild(String name) {
this.childNodes.remove(name);
}
public @Nullable Node getChild(String name) {
return this.childNodes.get(name);
}
public DirectoryNode directoryByPath(CopyOnWriteFSPath path) throws CowFSNoSuchFileException, CowFSNotDirectoryException {
if (this.byPath(path) instanceof DirectoryNode result) {
return result;
} else {
throw new CowFSNotDirectoryException(path + " was a file, expected directory");
}
}
public FileNode fileByPath(CopyOnWriteFSPath path) throws CowFSNoSuchFileException {
if (this.byPathOrNull(path) instanceof FileNode result) {
return result;
} else {
throw new CowFSNoSuchFileException(path.toString());
}
}
public Node byPath(CopyOnWriteFSPath path) throws CowFSNoSuchFileException {
Node node = this.byPathOrNull(path);
if (node != null) {
return node;
} else {
throw new CowFSNoSuchFileException(path.toString());
}
}
public @Nullable Node byPathOrNull(CopyOnWriteFSPath path) {
int nameCount = path.getNameCount();
DirectoryNode directory = this;
for (int i = 0; i < nameCount; i++) {
String name = path.getName(i).toString();
if (!name.equals(".")) {
if (name.equals("..")) {
DirectoryNode parent = directory.parent;
if (parent != null) {
directory = parent;
}
} else {
Node nextNode = directory.getChild(name);
if (!(nextNode instanceof DirectoryNode nextDirectory)) {
return i == nameCount - 1 ? nextNode : null;
}
directory = nextDirectory;
}
}
}
return directory;
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/字段/继承/返回值
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CowFSNoSuchFileException()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CowFSNotDirectoryException()
- 引用位置: