package org.javastack.sftpserver.readonly; import java.io.IOException; import java.nio.file.FileStore; import java.nio.file.FileSystem; import java.nio.file.Path; import java.nio.file.PathMatcher; import java.nio.file.WatchService; import java.nio.file.attribute.UserPrincipalLookupService; import java.nio.file.spi.FileSystemProvider; import java.util.Set; public class ReadOnlyFileSystem extends FileSystem { private final FileSystem fs; public ReadOnlyFileSystem(final FileSystem fs) { this.fs = fs; } @Override public FileSystemProvider provider() { return fs.provider(); } @Override public void close() throws IOException { fs.close(); } @Override public boolean isOpen() { return fs.isOpen(); } @Override public boolean isReadOnly() { return true; } @Override public String getSeparator() { return fs.getSeparator(); } @Override public Iterable<Path> getRootDirectories() { return fs.getRootDirectories(); } @Override public Iterable<FileStore> getFileStores() { return fs.getFileStores(); } @Override public Set<String> supportedFileAttributeViews() { return fs.supportedFileAttributeViews(); } @Override public Path getPath(final String first, final String... more) { return fs.getPath(first, more); } @Override public PathMatcher getPathMatcher(final String syntaxAndPattern) { return fs.getPathMatcher(syntaxAndPattern); } @Override public UserPrincipalLookupService getUserPrincipalLookupService() { return fs.getUserPrincipalLookupService(); } @Override public WatchService newWatchService() throws IOException { return fs.newWatchService(); } }