Bom dia, como manipular em java arquivos identificando sua extensão e criando pasta movendo arquivos para dentro delas exemplo. arquivos mp4 criando a pasta mp4 e movendo arquivos mp4 para ela.
Fiz um exemplo de como vc pode fazer, tentei explicar cada operação nos comentários.
O ideal é que vc trate as exceções corretamente, no meu exemplo eu priorizei a simplicidade para que vc pegue a ideia e possa explorar sozinho.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class App {
public static void main(String... args) throws IOException {
Path source = Paths.get("src");
Path destination = Paths.get("dest");
String extension = ".txt";
// Verifica se o diretório de destino existe e cria se não existir
if (Files.notExists(destination)) {
Files.createDirectory(destination);
}
// Abre o diretório de origem como uma Stream.
// Usei o try porque ele garante que a Stream será fechada.
try (Stream<Path> files = Files.list(source)) {
// Inclui apenas os arquivos. Exclui da lista outros diretórios, por exemplo.
Stream<Path> onlyRegularFiles = files.filter(Files::isRegularFile);
// Inclui apenas arquivos com a extensão desejada.
Stream<Path> onlyWithExtension = onlyRegularFiles.filter(f -> f.toString().endsWith(extension));
// Transforma a Stream em um List.
List<Path> fileList = onlyWithExtension.collect(Collectors.toList());
// Move cada item da lista para o diretório de destino.
for (Path path : fileList) {
Files.move(path, destination.resolve(path.getFileName()));
}
}
}
}
Exemplo mais complexo, porém, mais completo, na minha opinião (Clique para expandir)
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
private static void printError(String message, IOException e) {
System.out.printf("%s: [%s] %s\n", message, e.getClass().getName(), e.getMessage());
}
private static boolean createDestinationDirectory(Path destination) {
try {
if (Files.notExists(destination)) {
Files.createDirectory(destination);
}
return true;
} catch (IOException e) {
printError("Erro ao criar diretório de destino", e);
return false;
}
}
private static List<Path> getFileList(Path source, String extension) {
try (Stream<Path> files = Files.list(source)) {
return files.filter(f -> Files.isRegularFile(f) && f.toString().endsWith(extension)).collect(Collectors.toList());
} catch (IOException e) {
printError("Erro ao pegar lista de arquivos", e);
return List.of();
}
}
private static Consumer<Path> move(Path destination) {
return path -> {
try {
Files.move(path, destination.resolve(path.getFileName()));
} catch (IOException e) {
printError("Erro ao mover arquivos", e);
}
};
}
public static void main(String... args) {
Path source = Paths.get("src");
Path destination = Paths.get("dest");
String extension = ".txt";
if (createDestinationDirectory(destination)) {
getFileList(source, extension).forEach(move(destination));
}
}
}
showw mais saberia me dizer como criar pasta dos arquivos automaticamente
Como assim? Me explica melhor.
Existe o método ‘mkdir()’ da classe File.
Irei sugerir dois links onde ensinam passo a passo de como capturar a extensão do arquivo e como criar novos diretórios.
Como obter a extensão do arquivo:
Java: Como obter a extensão de um arquivo - { Dicas de Java }
Criando pastas (diretórios) automaticamente no Java:
Criando pastas automaticamente com Java | Luiz Bitencourt (wordpress.com)
Estude os dois e organize o código de acordo com o que pretende.