Introduction
This example will demonstrate how to copy a file using Java. The algorithm is more than simple: check if the source file exists and open it for reading, create the destination file for writing and copy the content of the source file.
Console Application
By building the following code a Java console application will be created which attempts to copy a file.
Source Code
package copyfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
*
* @author leon
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try
{
if (2 != args.length)
{
throw new Exception("Enter source and destination file.");
}
Copy(args[0], args[1]);
}
catch(Exception Ex)
{
System.out.println( Ex.getMessage() );
}
}
public static void Copy(String sFileSrc, String sFileDest)
throws FileNotFoundException, IOException
{
//Open files
File FileSource = new File(sFileSrc);
//Make sure the source file really exists
if ( false == FileSource.exists() )
{
String sErr = "File '";
sErr += FileSource.getAbsolutePath();
sErr += "' does not exists.";
throw new FileNotFoundException(sErr);
}
File FileDestination = new File(sFileDest);
//Make sure the copy will not override an existing file
if (true == FileDestination.exists() )
{
String sErr = "File '";
sErr += FileDestination.getAbsolutePath();
sErr += "' exists.";
throw new FileNotFoundException(sErr);
}
//Open source file for reading
InputStream Input = new FileInputStream(FileSource);
//Create destination file and prepare it for writing
OutputStream Output = new FileOutputStream(FileDestination);
//Copy file content
byte[] Buffer = new byte[1024];
int nLength = 0;
while ( 0 < (nLength = Input.read(Buffer)) )
{
Output.write(Buffer, 0, nLength);
}
//Close both files
Input.close();
Output.close();
}
}
Run the Application
Different cases of execution of the application on Linux Fedora Core 11:
- Attempt to copy non-existing file
[leon@localhost dist]$ java -jar CopyFile.jar testSource testDest
File '/home/leon/NetBeansProjects/CopyFile/dist/testSource' does not exists.
Copy files successfully
[leon@localhost dist]$ java -jar CopyFile.jar testSource testDest
Destination file exists
[leon@localhost dist]$ java -jar CopyFile.jar testSource testDest
File '/home/leon/NetBeansProjects/CopyFile/dist/testDest' exists.
Class Reference
File
InputStream
OutputStream
FileNotFoundException
IOException
|