org.rx.io.LocalCurdFile Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rxlib Show documentation
Show all versions of rxlib Show documentation
A set of utilities for Java
package org.rx.io;
import lombok.SneakyThrows;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.rx.core.NQuery;
import org.rx.core.Strings;
import java.io.File;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
class LocalCurdFile implements CurdFile {
@SneakyThrows
@Override
public void createDirectory(String path) {
//!File parent = path.getParentFile();!
java.nio.file.Files.createDirectories(new File(FilenameUtils.getFullPath(path)).toPath());
}
@Override
public void saveFile(String filePath, InputStream in) {
try (FileStream fileStream = new FileStream(filePath)) {
IOStream.copyTo(in, fileStream.getWriter());
}
}
@SneakyThrows
@Override
public void delete(String path) {
FileUtils.forceDelete(new File(path));
// java.nio.file.Files.delete(); DirectoryNotEmptyException
// FileUtils.deleteQuietly(p);
}
@Override
public boolean isDirectory(String path) {
if (Strings.isEmpty(path)) {
throw new IllegalArgumentException("path");
}
char ch = path.charAt(path.length() - 1);
return ch == '/' || ch == '\\' || Strings.isEmpty(FilenameUtils.getExtension(path));
}
@Override
public boolean exists(String path) {
return java.nio.file.Files.exists(Paths.get(path));
}
@SneakyThrows
@Override
public NQuery listDirectories(String directoryPath, boolean recursive) {
File dir = new File(directoryPath);
if (!recursive) {
return NQuery.of(java.nio.file.Files.newDirectoryStream(dir.toPath(), java.nio.file.Files::isDirectory)).select(Path::toFile);
}
//FileUtils.listFiles() 有bug
return NQuery.of(FileUtils.listFilesAndDirs(dir, FileFilterUtils.falseFileFilter(), FileFilterUtils.directoryFileFilter()));
}
@Override
public NQuery listFiles(String directoryPath, boolean recursive) {
IOFileFilter ff = FileFilterUtils.fileFileFilter(), df = recursive ? FileFilterUtils.directoryFileFilter() : FileFilterUtils.falseFileFilter();
return NQuery.of(FileUtils.listFiles(new File(directoryPath), ff, df));
}
}