Pouvons-nous renommer un fichier avec test.txt
en test1.txt
?
Si test1.txt
existe-t-il renommer?
Comment le renommer en fichier test1.txt existant afin que le nouveau contenu de test.txt y soit ajouté pour une utilisation ultérieure?
Copié à partir 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
}
Pour ajouter au nouveau fichier:
Java.io.FileWriter out= new Java.io.FileWriter(file2, true /*append=yes*/);
En bref:
Files.move(source, source.resolveSibling("newname"));
Plus de détails:
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;
Ce qui suit est directement copié de http://docs.Oracle.com/javase/7/docs/api/index.html :
Supposons que nous voulions renommer un fichier en "nouveau nom", en le gardant dans le même répertoire:
Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));
Sinon, supposons que nous voulions déplacer un fichier dans un nouveau répertoire en conservant le même nom de fichier et en remplaçant tout fichier existant de ce nom dans le répertoire:
Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
Vous souhaitez utiliser la méthode renameTo sur un objet File .
Commencez par créer un objet File pour représenter la destination. Vérifiez si ce fichier existe. S'il n'existe pas, créez un nouvel objet File pour le fichier à déplacer. appelez la méthode renameTo sur le fichier à déplacer et vérifiez la valeur renvoyée par renameTo pour savoir si l'appel a abouti.
Si vous souhaitez ajouter le contenu d'un fichier à un autre, un certain nombre d'écrivains sont disponibles. Basé sur l'extension, cela ressemble à du texte brut, donc je regarderais le FileWriter .
Pour Java 1.6 et les versions antérieures, l’API la plus sûre et la plus propre à cet égard est celle de Files.move de Guava.
Exemple:
File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());
La première ligne permet de s’assurer que le nouveau fichier est dans le même répertoire, c’est-à-dire le répertoire parent de l’ancien fichier.
EDIT: J'ai écrit ceci avant de commencer à utiliser Java 7, qui introduisait une approche très similaire. Donc, si vous utilisez Java 7+, vous devriez voir et augmenter la réponse de kr37.
Renommer le fichier en le déplaçant vers un nouveau nom. (FileUtils provient d'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();
}
C'est un moyen facile de renommer un fichier:
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");
}
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"));
Pour remplacer un fichier existant par le nom "text1.txt":
Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);
S'il s'agit simplement de renommer le fichier, vous pouvez utiliser File.renameTo () .
Dans le cas où vous souhaitez ajouter le contenu du deuxième fichier au premier, consultez FileOutputStream avec l'option d'ajout constructeur ou La même chose pour FileWriter . Vous aurez besoin de lire le contenu du fichier à ajouter et de l'écrire à l'aide du flux de sortie/scripteur.
Essaye ça
File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult
Remarque: Nous devrions toujours vérifier la valeur renameTo afin de nous assurer que le changement de nom est réussi car il dépend de la plate-forme (système d'exploitation différent, système de fichiers différent) et il ne lève pas d'exception IO si renommer échoue.
Pour autant que je sache, renommer un fichier ne va pas ajouter son contenu à celui d'un fichier existant portant le nom de la cible.
Pour renommer un fichier en Java, consultez la documentation pour connaître la méthode renameTo()
de la classe File
.
Oui, vous pouvez utiliser File.renameTo (). Mais souvenez-vous d'avoir le bon chemin lorsque vous le renommez en un nouveau fichier.
import Java.util.Arrays;
import Java.util.List;
public class FileRenameUtility {
public static void main(String[] a) {
System.out.println("FileRenameUtility");
FileRenameUtility renameUtility = new FileRenameUtility();
renameUtility.fileRename("c:/Temp");
}
private void fileRename(String folder){
File file = new File(folder);
System.out.println("Reading this "+file.toString());
if(file.isDirectory()){
File[] files = file.listFiles();
List<File> filelist = Arrays.asList(files);
filelist.forEach(f->{
if(!f.isDirectory() && f.getName().startsWith("Old")){
System.out.println(f.getAbsolutePath());
String newName = f.getAbsolutePath().replace("Old","New");
boolean isRenamed = f.renameTo(new File(newName));
if(isRenamed)
System.out.println(String.format("Renamed this file %s to %s",f.getName(),newName));
else
System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
}
});
}
}
}
Voici mon code pour renommer plusieurs fichiers dans un dossier avec succès:
public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
if(newName == null || newName.equals("")) {
System.out.println("New name cannot be null or empty");
return;
}
if(extension == null || extension.equals("")) {
System.out.println("Extension cannot be null or empty");
return;
}
File dir = new File(folderPath);
int i = 1;
if (dir.isDirectory()) { // make sure it's a directory
for (final File f : dir.listFiles()) {
try {
File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);
if(f.renameTo(newfile)){
System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
} else {
System.out.println("Rename failed");
}
i++;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
et lancez-le pour un exemple:
renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");
Files.move(file.toPath(), fileNew.toPath());
fonctionne, mais seulement lorsque vous fermez (ou autoclose) TOUTES les ressources utilisées (InputStream
, FileOutputStream
etc.) Je pense que la même situation se présente avec file.renameTo
ou FileUtils.moveFile
.