FileAccess.java
net.minecraft.util.filefix.access.FileAccess
信息
- 全限定名:net.minecraft.util.filefix.access.FileAccess
- 类型:public class
- 包:net.minecraft.util.filefix.access
- 源码路径:src/main/java/net/minecraft/util/filefix/access/FileAccess.java
- 起始行号:L9
- 实现:AutoCloseable
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L10 - 说明:
TODO
- 类型:
-
fileAccessProvider- 类型:
FileAccessProvider - 修饰符:
private final - 源码定位:
L11 - 说明:
TODO
- 类型:
-
type- 类型:
FileResourceType<T> - 修饰符:
private final - 源码定位:
L12 - 说明:
TODO
- 类型:
-
fileRelation- 类型:
FileRelation - 修饰符:
private final - 源码定位:
L13 - 说明:
TODO
- 类型:
-
files- 类型:
List<T> - 修饰符:
private - 源码定位:
L14 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public FileAccess(FileAccessProvider fileAccessProvider, FileResourceType<T> type, FileRelation fileRelation) @ L16
- 构造器名:FileAccess
- 源码定位:L16
- 修饰符:public
参数:
- fileAccessProvider: FileAccessProvider
- type: FileResourceType
- fileRelation: FileRelation
说明:
TODO
方法
下面的方法块按源码顺序生成。
public List<T> get() @ L22
- 方法名:get
- 源码定位:L22
- 返回类型:List
- 修饰符:public
参数:
- 无
说明:
TODO
public T getOnlyFile() @ L35
- 方法名:getOnlyFile
- 源码定位:L35
- 返回类型:T
- 修饰符:public
参数:
- 无
说明:
TODO
public void close() @ L44
- 方法名:close
- 源码定位:L44
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class FileAccess<T extends AutoCloseable> implements AutoCloseable {
private static final Logger LOGGER = LogUtils.getLogger();
private final FileAccessProvider fileAccessProvider;
private final FileResourceType<T> type;
private final FileRelation fileRelation;
private @Nullable List<T> files;
public FileAccess(FileAccessProvider fileAccessProvider, FileResourceType<T> type, FileRelation fileRelation) {
this.fileAccessProvider = fileAccessProvider;
this.type = type;
this.fileRelation = fileRelation;
}
public List<T> get() {
if (this.files == null) {
Path baseDirectory = this.fileAccessProvider.baseDirectory().get();
if (baseDirectory == null) {
throw new IllegalStateException("Cannot access world files");
}
this.files = this.fileRelation.getPaths(baseDirectory).stream().map(path -> this.type.create(path, this.fileAccessProvider.dataVersion())).toList();
}
return this.files;
}
public T getOnlyFile() {
List<T> files = this.get();
if (files.size() != 1) {
throw new IllegalStateException("Trying to get only file, but there are " + files.size() + " files");
} else {
return files.getFirst();
}
}
@Override
public void close() {
if (this.files != null) {
for (T file : this.files) {
try {
file.close();
} catch (Exception var4) {
LOGGER.error("Failed to close file: ", (Throwable)var4);
}
}
this.files = null;
}
}
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置: