package com.primeton.damp.fileclient; import org.apache.commons.compress.utils.IOUtils; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.util.Collections; import java.util.List; import java.util.Properties; import java.util.stream.Collectors; /** * * 本地文件系统 模拟 X11 * *
 *
 * Created by zhaopx.
 * User: zhaopx
 * Date: 2021/3/31
 * Time: 09:38
 *
 * 
* * @author zhaopx */ public class LocalFsClientHandler implements X11ClientHandler { /** * 执行路径的基础路径 */ private final String basePath; /** * 本地文件系统 */ private final static FileSystem fs = FileSystems.getDefault(); public LocalFsClientHandler(String basePath) { this.basePath = basePath; } @Override public void reconnect(Properties params) throws IOException { } @Override public OutputStream writeFile(String file, boolean overwrite) throws IOException { final Path fsPath = fs.getPath(basePath, file); return new FileOutputStream(fsPath.toFile(), !overwrite); } @Override public boolean mkdir(String path) { final Path fsPath = fs.getPath(basePath, path); try { Files.createDirectory(fsPath); return existsDir(path); } catch (IOException e) { throw new RuntimeException(e); } } @Override public boolean mkdirs(String path) { final Path fsPath = fs.getPath(basePath, path); return fsPath.toFile().mkdirs(); } @Override public List getChildren(String ftpPath) { final Path fsPath = fs.getPath(basePath, ftpPath); if(Files.exists(fsPath) && Files.isDirectory(fsPath)) { try { return Files.list(fsPath).collect(Collectors.toList()); } catch (Exception e) { throw new RuntimeException(e); } } return Collections.emptyList(); } @Override public boolean exists(String path) { final Path fsPath = fs.getPath(basePath, path); return Files.exists(fsPath); } @Override public boolean existsDir(String path) { final Path fsPath = fs.getPath(basePath, path); return Files.exists(fsPath) && Files.isDirectory(fsPath); } @Override public boolean existsFile(String path) { final Path fsPath = fs.getPath(basePath, path); return Files.exists(fsPath) && Files.isRegularFile(fsPath); } @Override public void close() throws IOException { } //test public static void main(String[] args) throws IOException { String basePath = "/Volumes/Media/Primeton/CODE/damp/damp-server/manual"; LocalFsClientHandler handler = new LocalFsClientHandler(basePath); List result = handler.getChildren("/"); for (Path ftpFile : result) { System.out.println(ftpFile.toString()); } System.out.println(handler.exists("/")); System.out.println(handler.exists("/hello.txt")); System.out.println(handler.exists("/example_data_1225")); System.out.println(handler.exists("/world/example_data_1225")); if(!handler.existsDir("/world/example_data_1225")) { System.out.println(handler.mkdirs("/world/example_data_1225")); } System.out.println(handler.exists("/world/example_data_1225")); } }