LinkFSProvider.java
net.minecraft.server.packs.linkfs.LinkFSProvider
信息
- 全限定名:net.minecraft.server.packs.linkfs.LinkFSProvider
- 类型:package-private class
- 包:net.minecraft.server.packs.linkfs
- 源码路径:src/main/java/net/minecraft/server/packs/linkfs/LinkFSProvider.java
- 起始行号:L34
- 继承:FileSystemProvider
- 职责:
TODO
字段/常量
SCHEME- 类型:
String - 修饰符:
public static final - 源码定位:
L35 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public String getScheme() @ L37
- 方法名:getScheme
- 源码定位:L37
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public FileSystem newFileSystem(URI uri, Map<String,?> env) @ L42
- 方法名:newFileSystem
- 源码定位:L42
- 返回类型:FileSystem
- 修饰符:public
参数:
- uri: URI
- env: Map<String,?>
说明:
TODO
public FileSystem getFileSystem(URI uri) @ L47
- 方法名:getFileSystem
- 源码定位:L47
- 返回类型:FileSystem
- 修饰符:public
参数:
- uri: URI
说明:
TODO
public Path getPath(URI uri) @ L52
- 方法名:getPath
- 源码定位:L52
- 返回类型:Path
- 修饰符:public
参数:
- uri: URI
说明:
TODO
public SeekableByteChannel newByteChannel(Path path, Set<?extends OpenOption> options, FileAttribute<?>... attrs) @ L57
- 方法名:newByteChannel
- 源码定位:L57
- 返回类型:SeekableByteChannel
- 修饰符:public
参数:
- path: Path
- options: Set<?extends OpenOption>
- attrs: FileAttribute<?>…
说明:
TODO
public DirectoryStream<Path> newDirectoryStream(Path dir, Filter<?super Path> filter) @ L74
- 方法名:newDirectoryStream
- 源码定位:L74
- 返回类型:DirectoryStream
- 修饰符:public
参数:
- dir: Path
- filter: Filter<?super Path>
说明:
TODO
public void createDirectory(Path dir, FileAttribute<?>... attrs) @ L103
- 方法名:createDirectory
- 源码定位:L103
- 返回类型:void
- 修饰符:public
参数:
- dir: Path
- attrs: FileAttribute<?>…
说明:
TODO
public void delete(Path path) @ L108
- 方法名:delete
- 源码定位:L108
- 返回类型:void
- 修饰符:public
参数:
- path: Path
说明:
TODO
public void copy(Path source, Path target, CopyOption... options) @ L113
- 方法名:copy
- 源码定位:L113
- 返回类型:void
- 修饰符:public
参数:
- source: Path
- target: Path
- options: CopyOption…
说明:
TODO
public void move(Path source, Path target, CopyOption... options) @ L118
- 方法名:move
- 源码定位:L118
- 返回类型:void
- 修饰符:public
参数:
- source: Path
- target: Path
- options: CopyOption…
说明:
TODO
public boolean isSameFile(Path path, Path path2) @ L123
- 方法名:isSameFile
- 源码定位:L123
- 返回类型:boolean
- 修饰符:public
参数:
- path: Path
- path2: Path
说明:
TODO
public boolean isHidden(Path path) @ L128
- 方法名:isHidden
- 源码定位:L128
- 返回类型:boolean
- 修饰符:public
参数:
- path: Path
说明:
TODO
public FileStore getFileStore(Path path) @ L133
- 方法名:getFileStore
- 源码定位:L133
- 返回类型:FileStore
- 修饰符:public
参数:
- path: Path
说明:
TODO
public void checkAccess(Path path, AccessMode... modes) @ L138
- 方法名:checkAccess
- 源码定位:L138
- 返回类型:void
- 修饰符:public
参数:
- path: Path
- modes: AccessMode…
说明:
TODO
public <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options) @ L165
- 方法名:getFileAttributeView
- 源码定位:L165
- 返回类型:
V - 修饰符:public
参数:
- path: Path
- type: Class
- options: LinkOption…
说明:
TODO
public <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) @ L171
- 方法名:readAttributes
- 源码定位:L171
- 返回类型: A
- 修饰符:public
参数:
说明:
TODO
public Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) @ L181
- 方法名:readAttributes
- 源码定位:L181
- 返回类型:Map<String,Object>
- 修饰符:public
参数:
- path: Path
- attributes: String
- options: LinkOption…
说明:
TODO
public void setAttribute(Path path, String attribute, Object value, LinkOption... options) @ L186
- 方法名:setAttribute
- 源码定位:L186
- 返回类型:void
- 修饰符:public
参数:
- path: Path
- attribute: String
- value: Object
- options: LinkOption…
说明:
TODO
private static LinkFSPath toLinkPath(Path path) @ L191
- 方法名:toLinkPath
- 源码定位:L191
- 返回类型:LinkFSPath
- 修饰符:private static
参数:
- path: Path
说明:
TODO
代码
class LinkFSProvider extends FileSystemProvider {
public static final String SCHEME = "x-mc-link";
@Override
public String getScheme() {
return "x-mc-link";
}
@Override
public FileSystem newFileSystem(URI uri, Map<String, ?> env) {
throw new UnsupportedOperationException();
}
@Override
public FileSystem getFileSystem(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public Path getPath(URI uri) {
throw new UnsupportedOperationException();
}
@Override
public SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException {
if (!options.contains(StandardOpenOption.CREATE_NEW)
&& !options.contains(StandardOpenOption.CREATE)
&& !options.contains(StandardOpenOption.APPEND)
&& !options.contains(StandardOpenOption.WRITE)) {
Path targetPath = toLinkPath(path).toAbsolutePath().getTargetPath();
if (targetPath == null) {
throw new NoSuchFileException(path.toString());
} else {
return Files.newByteChannel(targetPath, options, attrs);
}
} else {
throw new UnsupportedOperationException();
}
}
@Override
public DirectoryStream<Path> newDirectoryStream(Path dir, Filter<? super Path> filter) throws IOException {
final PathContents.DirectoryContents directoryContents = toLinkPath(dir).toAbsolutePath().getDirectoryContents();
if (directoryContents == null) {
throw new NotDirectoryException(dir.toString());
} else {
return new DirectoryStream<Path>() {
{
Objects.requireNonNull(LinkFSProvider.this);
}
@Override
public Iterator<Path> iterator() {
return directoryContents.children().values().stream().filter(path -> {
try {
return filter.accept(path);
} catch (IOException var3) {
throw new DirectoryIteratorException(var3);
}
}).map(path -> (Path)path).iterator();
}
@Override
public void close() {
}
};
}
}
@Override
public void createDirectory(Path dir, FileAttribute<?>... attrs) {
throw new ReadOnlyFileSystemException();
}
@Override
public void delete(Path path) {
throw new ReadOnlyFileSystemException();
}
@Override
public void copy(Path source, Path target, CopyOption... options) {
throw new ReadOnlyFileSystemException();
}
@Override
public void move(Path source, Path target, CopyOption... options) {
throw new ReadOnlyFileSystemException();
}
@Override
public boolean isSameFile(Path path, Path path2) {
return path instanceof LinkFSPath && path2 instanceof LinkFSPath && path.equals(path2);
}
@Override
public boolean isHidden(Path path) {
return false;
}
@Override
public FileStore getFileStore(Path path) {
return toLinkPath(path).getFileSystem().store();
}
@Override
public void checkAccess(Path path, AccessMode... modes) throws IOException {
if (modes.length == 0 && !toLinkPath(path).exists()) {
throw new NoSuchFileException(path.toString());
} else {
AccessMode[] var3 = modes;
int var4 = modes.length;
int var5 = 0;
while (var5 < var4) {
AccessMode mode = var3[var5];
switch (mode) {
case READ:
if (!toLinkPath(path).exists()) {
throw new NoSuchFileException(path.toString());
}
default:
var5++;
break;
case EXECUTE:
case WRITE:
throw new AccessDeniedException(mode.toString());
}
}
}
}
@Override
public <V extends FileAttributeView> @Nullable V getFileAttributeView(Path path, Class<V> type, LinkOption... options) {
LinkFSPath linkPath = toLinkPath(path);
return (V)(type == BasicFileAttributeView.class ? linkPath.getBasicAttributeView() : null);
}
@Override
public <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException {
LinkFSPath linkPath = toLinkPath(path).toAbsolutePath();
if (type == BasicFileAttributes.class) {
return (A)linkPath.getBasicAttributes();
} else {
throw new UnsupportedOperationException("Attributes of type " + type.getName() + " not supported");
}
}
@Override
public Map<String, Object> readAttributes(Path path, String attributes, LinkOption... options) {
throw new UnsupportedOperationException();
}
@Override
public void setAttribute(Path path, String attribute, Object value, LinkOption... options) {
throw new ReadOnlyFileSystemException();
}
private static LinkFSPath toLinkPath(@Nullable Path path) {
if (path == null) {
throw new NullPointerException();
} else if (path instanceof LinkFSPath p) {
return p;
} else {
throw new ProviderMismatchException();
}
}
}引用的其他类
- LinkFSPath
- 引用位置:
返回值
- 引用位置: