How do I move a file from one location to another in Java?

JavaFileMove

Java Problem Overview


How do you move a file from one location to another? When I run my program any file created in that location automatically moves to the specified location. How do I know which file is moved?

Java Solutions


Solution 1 - Java

myFile.renameTo(new File("/the/new/place/newName.file"));

File#renameTo does that (it can not only rename, but also move between directories, at least on the same file system).

> Renames the file denoted by this abstract pathname. > > Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.

If you need a more comprehensive solution (such as wanting to move the file between disks), look at Apache Commons FileUtils#moveFile

Solution 2 - Java

With Java 7 or newer you can use Files.move(from, to, CopyOption... options).

E.g.

Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);

See the Files documentation for more details

Solution 3 - Java

Java 6

public boolean moveFile(String sourcePath, String targetPath) {

	File fileToMove = new File(sourcePath);

	return fileToMove.renameTo(new File(targetPath));
}

Java 7 (Using 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;
}

Solution 4 - Java

File.renameTo from Java IO can be used to move a file in Java. Also see this SO question.

Solution 5 - Java

To move a file you could also use Jakarta Commons IOs FileUtils.moveFile

On error it throws an IOException, so when no exception is thrown you know that that the file was moved.

Solution 6 - Java

Just add the source and destination folder paths.

It will move all the files and folder from source folder to destination folder.

	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");
	}

Solution 7 - Java

Files.move(source, target, REPLACE_EXISTING);

You can use the Files object

> Read more about Files

Solution 8 - Java

You could execute an external tool for that task (like copy in windows environments) but, to keep the code portable, the general approach is to:

  1. read the source file into memory
  2. write the content to a file at the new location
  3. delete the source file

File#renameTo will work as long as source and target location are on the same volume. Personally I'd avoid using it to move files to different folders.

Solution 9 - Java

Try this :-

  boolean success = file.renameTo(new File(Destdir, file.getName()));

Solution 10 - Java

You can try this.. clean solution

Files.move(source, target, REPLACE_EXISTING);

Solution 11 - Java

Wrote this method to do this very thing on my own project only with the replace file if existing logic in it.

// 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;
    }		
}

Solution 12 - Java

Please try this.

 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;
            }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpmadView Question on Stackoverflow
Solution 1 - JavaThiloView Answer on Stackoverflow
Solution 2 - JavamichaView Answer on Stackoverflow
Solution 3 - JavapvrforpranavvrView Answer on Stackoverflow
Solution 4 - JavaPiotrView Answer on Stackoverflow
Solution 5 - JavaDerMikeView Answer on Stackoverflow
Solution 6 - Javamanjeet lamaView Answer on Stackoverflow
Solution 7 - JavaDaniel TaubView Answer on Stackoverflow
Solution 8 - JavaAndreas DolkView Answer on Stackoverflow
Solution 9 - JavaVijayView Answer on Stackoverflow
Solution 10 - JavaSaurabh VermaView Answer on Stackoverflow
Solution 11 - JavaJoel MView Answer on Stackoverflow
Solution 12 - JavaSaranga kapilarathnaView Answer on Stackoverflow