domingo, 30 de diciembre de 2018

Como renombrar ficheros con Java 8

Bueno esta es una entrada más para temas personales que aprender algo propiamente dicho, pero puede ser util igualmente. En este post veremos un pequeño código que nos permitirá renombrar los ficheros: Lo haremos con Java 8 y haciendo uso de Stream y Interfaces funcionales. 

Aquí esta el código de ejemplo:


package es.home.renamer;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;
public class ChangeImageName {
 static String MAIN_PATH = "/home/user/Pictures";
 static String IMAGE_REGEX_1 = "IMG-([0-9]{4})([0-9]{2})([0-9]{2})-WA([0-9]{4}).([\\w]{3})";
 static String PATTERN_FILENAME = "%s-%s-%s %s.%s.%s.%s";
 static Integer COUNT = 0;
 static Pattern PATTERN = Pattern.compile(IMAGE_REGEX_1);
static Consumer<Path> renameFile = new Consumer<Path>() { @Override public void accept(Path path) { Matcher matcher = PATTERN.matcher(path.getFileName().toString()); if (matcher.find()) { String finalName = String.format(PATTERN_FILENAME, matcher.group(1), matcher.group(2), matcher.group(3), "00", "00", String.format("%02d", COUNT++), matcher.group(5)); Path target = Paths.get(path.getParent().toString(), finalName); if(!Files.exists(target)){ try { Files.move(path, target); } catch (IOException e) { e.printStackTrace(); } } } } }; static Predicate<Path> matchRegex = new Predicate<Path>() { @Override public boolean test(Path path) { return path.getFileName().toString().matches(IMAGE_REGEX_1); } }; public static void main(String[] args) { try { try (Stream<Path> paths = Files.walk(Paths.get(MAIN_PATH))) { paths.filter(Files::isRegularFile).filter(matchRegex).forEach(renameFile); } } catch (Exception except) { except.printStackTrace(); } } }

No hay comentarios:

Publicar un comentario