Estou salvando arquivos em uma pasta utilizando o java, da seguinte forma
FileUtils.writeStringToFile(new File(enderecoDaPasta), conteudo, "UTF-8");
O código abaixo está funcionando, porém se gravo dois arquivos de mesmo nome, o arquivo enviado por último sobrescreve o primeiro. Gostaria que um arquivo não sobrescrevesse o outro, assim como quando colamos dois arquivos de mesmo nome o windows faz eles se organizarem da seguinte forma
nomeDoArquivo.txt
nomeDoArquivo(1).txt
nomeDoArquivo(2).txt
Gostaria de sugestões para resolver esse problema de maneira elegante
A classe File contém o método exists(), que você pode usar para verificar se já existe um arquivo com o mesmo nome. Se existir, você gera um novo nome. Inclusive, seria prático criar um método só pra gerar o nome. Algo como:
public File criarArquivo(String caminho, String nome, String extensao){
File f = new File(caminho + nome + extensao);
if (!f.exists() && !f.isDirectory()){
return f;
} else {
int index = 1;
do {
f = new File(caminho + nome + "(" + indice + ")" + extensao);
} while(f.exists());
return f;
}
Deve haver algo mais completo e funcional na net, se você der uma procurada.
Abraço.
1 curtida
public File criarArquivo(String caminho, String nome, String extensao){
File f = new File(caminho + nome + extensao);
if (!f.exists() && !f.isDirectory()){
return f;
} else {
int index = 1;
do {
f = new File(caminho + nome + "(" + index + ")" + extensao);
index++;
} while(f.exists());
return f;
}
}