import org.junit.Test; import java.io.IOException; import java.nio.file.Path; import java.util.Spliterator; import java.util.concurrent.atomic.AtomicReference; import static java.lang.Integer.MAX_VALUE; import static java.nio.file.Files.*; import static java.nio.file.Path.of; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import static javax.swing.JOptionPane.showInputDialog; public class BatchApp { @Test public void copyFiles() throws IOException { String first; String _first; while ((first = showInputDialog(null)) != null && (_first = showInputDialog(null)) != null) { copyFiles(first, _first); } } @Test public void moveFiles() throws IOException { String first; String _first; while ((first = showInputDialog(null)) != null && (_first = showInputDialog(null)) != null) { moveFiles(first, _first); } } public void copyFiles(String first, String _first) throws IOException { Spliterator<Path> spliterator = find(of(first), MAX_VALUE, (path, attributes) -> attributes.isDirectory()).spliterator(); Spliterator<Path> _spliterator = find(of(_first), MAX_VALUE, (path, attributes) -> attributes.isDirectory()).spliterator(); Spliterator<Path> $spliterator = find(of("D:/Temp"), MAX_VALUE, (path, attributes) -> attributes.isRegularFile()).filter(path -> path.toFile().getName().endsWith("etl")).spliterator(); AtomicReference<Path> reference = new AtomicReference<>(); AtomicReference<Path> _reference = new AtomicReference<>(); AtomicReference<Path> $reference = new AtomicReference<>(); while (spliterator.tryAdvance(path -> reference.set(path)) && _spliterator.tryAdvance(path -> _reference.set(path))) { Path path = reference.get(); Path _path = _reference.get(); if (path.getFileName().equals(_path.getFileName())) { Spliterator<Path> spliterator_ = find(path, MAX_VALUE, (p, attributes) -> attributes.isRegularFile()).spliterator(); AtomicReference<Path> reference_ = new AtomicReference<>(); while (spliterator_.tryAdvance(p -> reference_.set(p)) && $spliterator.tryAdvance(p -> $reference.set(p))) { Path path_ = reference_.get(); Path $path = $reference.get(); if(path_.getParent().getFileName().equals(_path.getFileName())){ copy(path_,$path,REPLACE_EXISTING); move($path,_path.resolve(path_.toFile().getName()),REPLACE_EXISTING); } } } } } public void moveFiles(String first, String _first) throws IOException { Spliterator<Path> spliterator = find(of(first), MAX_VALUE, (path, attributes) -> attributes.isDirectory()).spliterator(); Spliterator<Path> _spliterator = find(of(_first), MAX_VALUE, (path, attributes) -> attributes.isDirectory()).spliterator(); Spliterator<Path> $spliterator = find(of("D:/Temp"), MAX_VALUE, (path, attributes) -> attributes.isRegularFile()).filter(path -> path.toFile().getName().endsWith("etl")).spliterator(); AtomicReference<Path> reference = new AtomicReference<>(); AtomicReference<Path> _reference = new AtomicReference<>(); AtomicReference<Path> $reference = new AtomicReference<>(); while (spliterator.tryAdvance(path -> reference.set(path)) && _spliterator.tryAdvance(path -> _reference.set(path))) { Path path = reference.get(); Path _path = _reference.get(); if (path.getFileName().equals(_path.getFileName())) { Spliterator<Path> spliterator_ = find(path, MAX_VALUE, (p, attributes) -> attributes.isRegularFile()).spliterator(); AtomicReference<Path> reference_ = new AtomicReference<>(); while (spliterator_.tryAdvance(p -> reference_.set(p)) && $spliterator.tryAdvance(p -> $reference.set(p))) { Path path_ = reference_.get(); Path $path = $reference.get(); if(path_.getParent().getFileName().equals(_path.getFileName())){ copy(path_,$path,REPLACE_EXISTING); move($path,_path.resolve(path_.toFile().getName()),REPLACE_EXISTING); move(path_,_path.resolve(path_.toFile().getName()),REPLACE_EXISTING); } } } } } }
java批量复制修改文件参考
最新推荐文章于 2024-07-27 13:31:57 发布