import java.io.File;
import java.io.IOException;
/**
* renomeia um arquivo, remove um padrão e substitui por outro
* @param arg[0] arquivo ou diretorio
* @param arg[1] padrao a ser procurado
* @param arg[2] novo valor
* @param arg[3] opcional. se igual a "sub" procura nos subdiretórios
*/
public class RenomeiaArquivos {
String padrao;
String novoPadrao;
boolean subDiretorios = false;
public RenomeiaArquivos(String seq, String novaSeq, boolean sub) {
padrao = seq;
novoPadrao = novaSeq;
subDiretorios = sub;
}
private String adequaString(String original) {
return original.replace(padrao, novoPadrao);
}
private boolean renomeiaArquivo(File f) throws IOException {
if (f.getName().contains(padrao)) {
String novoNome = adequaString(f.getAbsolutePath());
return f.renameTo(new File(novoNome));
}
return false;
}
private void renomeiaDiretorio(File f) throws IOException {
String[] lista = f.list();
File arq;
for(int i=0; i < lista.length; i++) {
arq = new File(lista[i]);
if (arq.isFile()) {
renomeiaArquivo(arq);
} else if (subDiretorios) {
System.out.println("Dir>"+arq.getName());
renomeiaDiretorio(arq);
}
}
}
private void executar(String nomeArquivo) throws IOException {
File f = new File(nomeArquivo);
System.out.println("Renomeando "+f.getName());
if (f.isFile()) {
renomeiaArquivo(f);
} else {
renomeiaDiretorio(f);
}
}
public static void main(String[] args) {
if (args.length < 3) {
System.out.println("Uso: java RenomeiaArquivos {nomeArquivo|nomeDiretorio} \"padrao original\" \"novo padrao\" [sub]");
System.exit(0); // sair
}
boolean sub = (args.length > 3) && (args[3].equalsIgnoreCase("sub"));
RenomeiaArquivos ren = new RenomeiaArquivos(args[1], args[2], sub);
try {
ren.executar(args[0]);
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
import java.io.IOException;
/**
* renomeia um arquivo, remove um padrão e substitui por outro
* @param arg[0] arquivo ou diretorio
* @param arg[1] padrao a ser procurado
* @param arg[2] novo valor
* @param arg[3] opcional. se igual a "sub" procura nos subdiretórios
*/
public class RenomeiaArquivos {
String padrao;
String novoPadrao;
boolean subDiretorios = false;
public RenomeiaArquivos(String seq, String novaSeq, boolean sub) {
padrao = seq;
novoPadrao = novaSeq;
subDiretorios = sub;
}
private String adequaString(String original) {
return original.replace(padrao, novoPadrao);
}
private boolean renomeiaArquivo(File f) throws IOException {
if (f.getName().contains(padrao)) {
String novoNome = adequaString(f.getAbsolutePath());
return f.renameTo(new File(novoNome));
}
return false;
}
private void renomeiaDiretorio(File f) throws IOException {
String[] lista = f.list();
File arq;
for(int i=0; i < lista.length; i++) {
arq = new File(lista[i]);
if (arq.isFile()) {
renomeiaArquivo(arq);
} else if (subDiretorios) {
System.out.println("Dir>"+arq.getName());
renomeiaDiretorio(arq);
}
}
}
private void executar(String nomeArquivo) throws IOException {
File f = new File(nomeArquivo);
System.out.println("Renomeando "+f.getName());
if (f.isFile()) {
renomeiaArquivo(f);
} else {
renomeiaDiretorio(f);
}
}
public static void main(String[] args) {
if (args.length < 3) {
System.out.println("Uso: java RenomeiaArquivos {nomeArquivo|nomeDiretorio} \"padrao original\" \"novo padrao\" [sub]");
System.exit(0); // sair
}
boolean sub = (args.length > 3) && (args[3].equalsIgnoreCase("sub"));
RenomeiaArquivos ren = new RenomeiaArquivos(args[1], args[2], sub);
try {
ren.executar(args[0]);
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
Testem e descubram o erro deste programa.
Notem que ele compila e consegue ser executado. Este exemplo rodamos no linux com open-jdk.
Seria interessante que este programa utilize regex para podermos usar wildcard para o nome de arquivo.
Nenhum comentário:
Postar um comentário