Dúvida gravar arquivo com nome sequêncial

4 respostas
jv.nicocelli

Bom dia Srs.

Estou utilizando a classe File para realizar operaçoes de criação de arquivos e diretórios.

Estrou quebrando a cabeça aqui, de como fazer para que se o arquivo existir no diretório ele salve um novo arquivo com outro nome. Ex:
image01, image02, image03… etc…

Abaixo está o método que estou utilizando.

public void adicionaImagem() throws IOException{
		//getDiretorio retorna o diretório
		File dir = new File(getDiretorio());
     //Concatena o diretório com o nome do arquivo, no caso o getFilename é igual a imagem.jpg
		File file = new File(dir,getFilename());
		if(dir.isDirectory()){		
			try {
					file.createNewFile();
					
			} catch (FileNotFoundException ex) {
				System.out.println(ex.getMessage());
				ex.printStackTrace();
			}
		}
	}

Caso tenham um bom material sobre a classe File ou I/O por favor, recomendem.

4 Respostas

nel

Oi.

Tente use o método exists da classe File. Caso lhe retorne true, basta alterar o nome do arquivo que iria criar.

rso1988

Dá pra fazer o seguinte…

File folder = new File(folderPath); // Obtém o diretório dos arquivos.
    File files[] = folder.listFiles(); // Retorna um array com todos os arquivos do diretório.
    
    File lastFile = null;

    // Itera sobre todos os arquivos do diretório e obtém o mais atual.
    for (int i = 0; i < (files.length - 1); i++) { 
        if(files.get(i).lastModified() > files.get(i + 1).lastModified()) {
            lastFile = files.get(i);
        } else {
            lastFile = files.get(i + 1);
        }
    }

    // Obtém o nome do último arquivo sem a extensão. Vamos supor que o nome seja "image1456" e o próximo deva ser "image1457".
    String lastFileName = lastFile.getName().substring(0, (lastFile.getName().length() - 4)); 
    
    lastFileName = lastFileName.replace("image", ""); // Remove o prefixo "imagem" da String ficando somente com o "1456".
    int nextVal = Integer.parseInt(lastFileName) + 1; // 1456 + 1.

    String newFileName = "image" + String.valueOf(nextVal) + ".extensao"; // image1457.extensao
    
    // Daqui pra frente é só salvar o arquivo com o novo nome!

Talvéz precise relizar alguns ajustes nesse código, pois não testei na IDE…
Mas acho que isso resolve seu problema.

jv.nicocelli

nel:
Oi.

Tente use o método exists da classe File. Caso lhe retorne true, basta alterar o nome do arquivo que iria criar.

Na verdade eu já tentei fazer dessa forma, é que o filename está fixo como “imagem” então gostaria que quando o método fosse utilizado, verificaria a ultima imagem salva Ex: imagem101 e criasse na sequência Ex: imagem102…

No meu caso, estou utilizando isso para adicionar as imagens referente a Banners de Filme em um cadastro de filmes. Caso não encontrar outra solução irei gravar o nome da imagem igual ao nome do filme.

jv.nicocelli

rso1988:
Dá pra fazer o seguinte…

Talvéz precise relizar alguns ajustes nesse código, pois não testei na IDE…
Mas acho que isso resolve seu problema.

rso1988,

É exatamente isso que eu precisava, vou realizar as alterações necessárias e em seguida posto o resultado.

Obrigado.

Criado 26 de outubro de 2011
Ultima resposta 26 de out. de 2011
Respostas 4
Participantes 3