studio - mover y copiar archivos en java
¿Cómo muevo un archivo de una ubicación a otra en Java? (10)
Con Java 7 o posterior, puede usar Files.move(from, to, CopyOption... options)
.
P.ej
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
Vea la documentación de Files para más detalles
¿Cómo se mueve un archivo de una ubicación a otra? Cuando ejecuto mi programa, cualquier archivo creado en esa ubicación se mueve automáticamente a la ubicación especificada. ¿Cómo sé qué archivo se mueve?
¡Gracias por adelantado!
Escribí este método para hacer esto mismo en mi propio proyecto solo con el archivo de reemplazo si hay lógica existente en él.
// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation
private boolean moveFileToDirectory(File sourceFile, String targetPath) {
File tDir = new File(targetPath);
if (tDir.exists()) {
String newFilePath = targetPath+File.separator+sourceFile.getName();
File movedFile = new File(newFilePath);
if (movedFile.exists())
movedFile.delete();
return sourceFile.renameTo(new File(newFilePath));
} else {
LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist");
return false;
}
}
Para mover un archivo, también puede utilizar IOs de Yakarta Commons FileUtils.moveFile
Por error arroja una IOException
, por lo que cuando no se produce una IOException
, usted sabe que el archivo se movió.
Prueba esto :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
Puede ejecutar una herramienta externa para esa tarea (como copy
en entornos de Windows) pero, para mantener el código portátil, el enfoque general es:
- leer el archivo fuente en la memoria
- escribe el contenido en un archivo en la nueva ubicación
- eliminar el archivo fuente
File#renameTo
funcionará siempre que la ubicación de origen y destino estén en el mismo volumen. Personalmente evitaría usarlo para mover archivos a diferentes carpetas.
File.renameTo
from Java IO se puede usar para mover un archivo en Java. También vea esta pregunta SO .
Java 6
public boolean moveFile(String sourcePath, String targetPath) {
File fileToMove = new File(sourcePath);
return fileToMove.renameTo(new File(targetPath));
}
Java 7 (usando NIO)
public boolean moveFile(String sourcePath, String targetPath) {
boolean flag = true;
try {
Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
Solo agregue las rutas de las carpetas de origen y destino.
Moverá todos los archivos y la carpeta de la carpeta de origen a la carpeta de destino.
File destinationFolder = new File("");
File sourceFolder = new File("");
if (!destinationFolder.exists())
{
destinationFolder.mkdirs();
}
// Check weather source exists and it is folder.
if (sourceFolder.exists() && sourceFolder.isDirectory())
{
// Get list of the files and iterate over them
File[] listOfFiles = sourceFolder.listFiles();
if (listOfFiles != null)
{
for (File child : listOfFiles )
{
// Move files to destination folder
child.renameTo(new File(destinationFolder + "//" + child.getName()));
}
// Add if you want to delete the source folder
sourceFolder.delete();
}
}
else
{
System.out.println(sourceFolder + " Folder does not exists");
}
Files.move(source, target, REPLACE_EXISTING);
Puedes usar el objeto Files
Lea más acerca de los Files
myFile.renameTo(new File("/the/new/place/newName.file"));
File#renameTo hace eso (no solo puede cambiar el nombre, sino también moverse entre directorios, al menos en el mismo sistema de archivos).
Cambia el nombre del archivo indicado por este nombre de ruta abstracto.
Muchos aspectos del comportamiento de este método dependen intrínsecamente de la plataforma: la operación de cambio de nombre podría no ser capaz de mover un archivo de un sistema de archivos a otro, podría no ser atómico y podría no tener éxito si un archivo con el nombre de ruta abstracto de destino ya existe. El valor de retorno siempre se debe verificar para asegurarse de que la operación de cambio de nombre fue exitosa.
Si necesita una solución más completa (como querer mover el archivo entre discos), consulte Apache Commons FileUtils#moveFile