Skip to content

Java File Copy Utilities

Asterios Raptis edited this page Feb 10, 2025 · 1 revision

Overview

This documentation provides an overview of the Java classes for copying files and directories. These classes facilitate copying individual files, directories, and handling encoding conversions while copying.

Table of Contents


Introduction

The file copy utility provides functionality for copying files and directories efficiently. The key functionalities include:

  • Copying individual files.
  • Copying entire directories with optional filtering.
  • Creating backup copies of files.
  • Handling encoding conversions during file copying.

Classes Overview

Copyable

The Copyable interface provides default methods for copying files and directories. It defines the core methods that interact with CopyDirectoryExtensions and CopyFileExtensions for performing copy operations.

Methods

Method Description
boolean copyDirectory(Path source, Path destination) Copies a directory from the source path to the destination path.
boolean copyDirectory(File source, File destination) Copies a directory using File objects instead of Path.
boolean copyFile(File source, File destination) Copies a single file to the specified destination.
void copyFiles(Collection<File> sources, File destination, Charset sourceEncoding, Charset destinationEncoding, boolean lastModified) Copies multiple files with optional encoding conversion.
File newBackupOf(File file, Charset sourceEncoding, Charset destinationEncoding) Creates a backup copy of the given file with a .bak extension.
boolean copyFile(Path source, Path destination) Copies a single file using Path objects.
void copyFiles(Collection<Path> sources, Path destination) Copies multiple files from a collection to a directory.
Path newBackupOf(Path path) Creates a backup copy of the specified file.

CopyDirectoryExtensions

The CopyDirectoryExtensions class provides static methods for copying directories. It includes additional options such as applying file filters and setting the last modified timestamp.

Methods

Method Description
boolean copyDirectory(Path source, Path destination) Recursively copies a directory from source to destination.
boolean copyDirectory(File source, File destination) Copies a directory using File objects.
boolean copyDirectory(File source, File destination, boolean lastModified) Copies a directory and sets the last modified timestamp.
boolean copyDirectoryWithFileFilter(File source, File destination, FileFilter includeFileFilter, FileFilter excludeFileFilter, boolean lastModified) Copies directories while filtering files based on include/exclude filters.
boolean copyDirectoryWithFilenameFilter(File source, File destination, FilenameFilter includeFilenameFilter, FilenameFilter excludeFilenameFilter, boolean lastModified) Copies directories while filtering based on filename patterns.

CopyFileExtensions

The CopyFileExtensions class provides static methods for copying individual files, handling encoding conversions, and creating backup files.

Methods

Method Description
boolean copyFile(Path source, Path destination) Copies a single file.
void copyFiles(Collection<Path> sources, Path destination) Copies multiple files to a destination directory.
Path newBackupOf(Path file) Creates a backup copy of the specified file.
boolean copyFile(File source, File destination) Copies a file using File objects.
boolean copyFile(File source, File destination, boolean lastModified) Copies a file while preserving the last modified timestamp.
boolean copyFile(File source, File destination, Charset sourceEncoding, Charset destinationEncoding, boolean lastModified) Copies a file with encoding conversion.
void copyFiles(Collection<File> sources, File destination, Charset sourceEncoding, Charset destinationEncoding, boolean lastModified) Copies multiple files with encoding conversion.

Usage Examples

Copying a File

File sourceFile = new File("source.txt");
File destinationFile = new File("destination.txt");
boolean copied = CopyFileExtensions.copyFile(sourceFile, destinationFile);
System.out.println("File copied: " + copied);

Copying a Directory

File sourceDir = new File("source_directory");
File destinationDir = new File("destination_directory");
boolean copied = CopyDirectoryExtensions.copyDirectory(sourceDir, destinationDir);
System.out.println("Directory copied: " + copied);

Creating a Backup File

File originalFile = new File("document.txt");
File backupFile = CopyFileExtensions.newBackupOf(originalFile, Charset.defaultCharset(), null);
System.out.println("Backup created: " + backupFile.getAbsolutePath());

Copying Files with Encoding Conversion

Collection<File> filesToCopy = List.of(new File("file1.txt"), new File("file2.txt"));
File destinationFolder = new File("backup/");
Charset sourceEncoding = Charset.forName("UTF-8");
Charset destinationEncoding = Charset.forName("ISO-8859-1");

CopyFileExtensions.copyFiles(filesToCopy, destinationFolder, sourceEncoding, destinationEncoding, true);

Exception Handling

The file copy operations throw specific exceptions in case of errors:

Exception Cause
IOException General I/O errors during file operations.
FileIsADirectoryException When a file operation is attempted on a directory.
FileIsNotADirectoryException When a directory operation is attempted on a non-directory.
FileIsSecurityRestrictedException When access to a file is restricted.
DirectoryAlreadyExistsException When attempting to copy to an already existing directory.

Conclusion

This Java file copy utility provides robust methods to copy files and directories efficiently. With support for encoding conversion and backup creation, it offers a versatile solution for file management.

Clone this wiki locally