Renomeie um arquivo usando Java

Podemos renomear um arquivo, digamos test.txt para test1.txt ?

Se test1.txt existir, ele renomeará?

Como eu renomeio para o arquivo test1.txt já existente para que o novo conteúdo do test.txt seja adicionado a ele para uso posterior?

Copiado de http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html

 // File (or directory) with old name File file = new File("oldname"); // File (or directory) with new name File file2 = new File("newname"); if (file2.exists()) throw new java.io.IOException("file exists"); // Rename file (or directory) boolean success = file.renameTo(file2); if (!success) { // File was not successfully renamed } 

Para acrescentar ao novo arquivo:

 java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/); 

Em resumo:

 Files.move(source, source.resolveSibling("newname")); 

Mais detalhes:

 import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; 

O seguinte é copiado diretamente de http://docs.oracle.com/javase/7/docs/api/index.html :

Suponha que queremos renomear um arquivo para “newname”, mantendo o arquivo no mesmo diretório:

 Path source = Paths.get("path/here"); Files.move(source, source.resolveSibling("newname")); 

Como alternativa, suponha que queremos mover um arquivo para um novo diretório, mantendo o mesmo nome de arquivo e substituindo qualquer arquivo existente com esse nome no diretório:

 Path source = Paths.get("from/path"); Path newdir = Paths.get("to/path"); Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING); 

Você deseja utilizar o método renameTo em um object File .

Primeiro, crie um object File para representar o destino. Verifique para ver se esse arquivo existe. Se não existir, crie um novo object File para o arquivo a ser movido. chame o método renameTo no arquivo a ser movido e verifique o valor retornado de renameTo para ver se a chamada foi bem-sucedida.

Se você quiser acrescentar o conteúdo de um arquivo a outro, há vários escritores disponíveis. Com base na extensão, parece que é um texto sem formatação, por isso gostaria de ver o FileWriter .

Para o Java 1.6 e inferior, acredito que a API mais segura e limpa para isso é o Files.move da Guava.

Exemplo:

 File newFile = new File(oldFile.getParent(), "new-file-name.txt"); Files.move(oldFile.toPath(), newFile.toPath()); 

A primeira linha garante que o local do novo arquivo seja o mesmo, isto é, o diretório pai do arquivo antigo.

EDIT: Eu escrevi isso antes de começar a usar o Java 7, que introduziu uma abordagem muito semelhante. Então, se você está usando o Java 7+, você deve ver e votar a resposta do kr37.

Renomeando o arquivo, movendo-o para um novo nome. (FileUtils é do Apache Commons IO lib)

  String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName; File newFile = new File(newFilePath); try { FileUtils.moveFile(oldFile, newFile); } catch (IOException e) { e.printStackTrace(); } 

Esta é uma maneira fácil de renomear um arquivo:

  File oldfile =new File("test.txt"); File newfile =new File("test1.txt"); if(oldfile.renameTo(newfile)){ System.out.println("File renamed"); }else{ System.out.println("Sorry! the file can't be renamed"); } 

Se estiver apenas renomeando o arquivo, você pode usar File.renameTo () .

No caso em que você deseja append o conteúdo do segundo arquivo ao primeiro, dê uma olhada no FileOutputStream com a opção de construtor append ou A mesma coisa para o FileWriter . Você precisará ler o conteúdo do arquivo para anexá-lo e escrevê-lo usando o stream de saída / gravador.

 import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import static java.nio.file.StandardCopyOption.*; Path yourFile = Paths.get("path_to_your_file\text.txt"); Files.move(yourFile, yourFile.resolveSibling("text1.txt")); 

Para replace um arquivo existente pelo nome “text1.txt”:

 Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING); 

Tente isto

 File file=new File("Your File"); boolean renameResult = file.renameTo(new File("New Name")); // todo: check renameResult 

Nota: Devemos sempre verificar o valor renameTo para garantir que o renomear arquivo seja bem-sucedido porque é dependente da plataforma (sistema operacional diferente, sistema de arquivos diferente) e não lança a exceção de IO se a renomeação falhar.

Tanto quanto eu sei, renomear um arquivo não irá acrescentar seu conteúdo ao de um arquivo existente com o nome do alvo.

Sobre renomear um arquivo em Java, consulte a documentação do método renameTo() na class File .

 Files.move(file.toPath(), fileNew.toPath()); 

funciona, mas apenas quando você fechar (ou fechar automaticamente) todos os resources utilizados ( InputStream , FileOutputStream etc.) Eu acho que a mesma situação com file.renameTo ou FileUtils.moveFile .

A execução do código está aqui.

 private static void renameFile(File fileName) { FileOutputStream fileOutputStream =null; BufferedReader br = null; FileReader fr = null; String newFileName = "yourNewFileName" try { fileOutputStream = new FileOutputStream(newFileName); fr = new FileReader(fileName); br = new BufferedReader(fr); String sCurrentLine; while ((sCurrentLine = br.readLine()) != null) { fileOutputStream.write(("\n"+sCurrentLine).getBytes()); } fileOutputStream.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { fileOutputStream.close(); if (br != null) br.close(); if (fr != null) fr.close(); } catch (IOException ex) { ex.printStackTrace(); } } }