filebot/source/net/filebot/archive/FileMapper.java

58 lines
1.3 KiB
Java
Raw Normal View History

2014-04-19 02:30:29 -04:00
package net.filebot.archive;
2017-09-22 02:54:08 -04:00
import static java.util.stream.Collectors.*;
import static net.filebot.util.FileUtilities.*;
2017-09-22 02:54:08 -04:00
import java.io.File;
2017-09-22 02:54:08 -04:00
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
2017-09-22 02:54:08 -04:00
import java.util.Collection;
import java.util.Set;
import net.filebot.vfs.FileInfo;
public class FileMapper implements ExtractOutProvider {
private File outputDir;
private boolean flatten;
2015-03-26 04:40:57 -04:00
public FileMapper(File outputDir) {
this(outputDir, false);
};
public FileMapper(File outputDir, boolean flatten) {
this.outputDir = outputDir;
this.flatten = flatten;
};
public File getOutputDir() {
return outputDir;
}
public File getOutputFile(File entry) {
return new File(outputDir, flatten ? entry.getName() : entry.getPath());
}
@Override
public OutputStream getStream(File entry) throws IOException {
File outputFile = getOutputFile(entry);
File outputFolder = outputFile.getParentFile();
// create parent folder if necessary
createFolders(outputFolder);
return new FileOutputStream(outputFile);
}
2017-09-22 02:54:08 -04:00
public FileFilter newPathFilter(Collection<FileInfo> selection) {
return newPathFilter(selection.stream().map(FileInfo::getPath).collect(toSet()));
}
public FileFilter newPathFilter(Set<String> selection) {
return f -> selection.contains(getOutputFile(f).getPath());
}
}