¿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?
¿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?
Respuestas:
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 son inherentemente dependientes de la plataforma: es posible que la operación de cambio de nombre no pueda mover un archivo de un sistema de archivos a otro, que no sea atómico y que no tenga éxito si un archivo con el nombre de ruta abstracto de destino ya existe. Siempre se debe verificar el valor de retorno 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
myFile
este comando no actualiza la ruta del objeto . Entonces apuntará a un archivo que ya no está allí.
Con Java 7 o más reciente puede usar Files.move(from, to, CopyOption... options)
.
P.ej
Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);
Consulte la documentación de Archivos para obtener más detalles.
Para mover un archivo, también puede usar Jakarta Commons IOs FileUtils.moveFile
En caso de error, arroja un IOException
, por lo que cuando no se lanza ninguna excepción, sabrá que el archivo se movió.
File.renameTo
from Java IO se puede utilizar para mover un archivo en Java. También vea esta pregunta SO .
Simplemente agregue las rutas de las carpetas de origen y destino.
Moverá todos los archivos y carpetas 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");
}
Java 6
public boolean moveFile(String sourcePath, String targetPath) {
File fileToMove = new File(sourcePath);
return fileToMove.renameTo(new File(targetPath));
}
Java 7 (con NIO)
public boolean moveFile(String sourcePath, String targetPath) {
boolean fileMoved = true;
try {
Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
fileMoved = false;
e.printStackTrace();
}
return fileMoved;
}
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:
File#renameTo
funcionará siempre que la ubicación de origen y de destino estén en el mismo volumen. Personalmente, evitaría usarlo para mover archivos a diferentes carpetas.
Prueba esto :-
boolean success = file.renameTo(new File(Destdir, file.getName()));
Escribí este método para hacer esto mismo en mi propio proyecto solo con el archivo de reemplazo si existe lógica 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;
}
}
Por favor intente esto.
private boolean filemovetoanotherfolder(String sourcefolder, String destinationfolder, String filename) {
boolean ismove = false;
InputStream inStream = null;
OutputStream outStream = null;
try {
File afile = new File(sourcefolder + filename);
File bfile = new File(destinationfolder + filename);
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024 * 4];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
// delete the original file
afile.delete();
ismove = true;
System.out.println("File is copied successful!");
} catch (IOException e) {
e.printStackTrace();
}finally{
inStream.close();
outStream.close();
}
return ismove;
}
close
instrucciones estuvieran en un finally
bloque, o si usara un bloque try-with-resources.
Puedes probar esta ... solución limpia
Files.move(source, target, REPLACE_EXISTING);
javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: REPLACE_EXISTING