Let’s say the source file name is Foo.txt. I want the name of the destination file to be Foo(Copy).txt. And I want the source file to be preserved. How do I go about accomplishing this?
/*
* Returns a copy of the specified source file
*
* @param sourceFile the specified source file
* @throws IOException if unable to copy the specified source file
*/
public static final File copyFile(final File sourceFile) throws IOException
{
// Construct the destination file
final File destinationFile = .. // TODO: Create copy file
if(!destinationFile.exists())
{
destinationFile.createNewFile();
}
// Copy the content of the source file into the destination file
FileChannel source = null;
FileChannel destination = null;
try
{
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destinationFile).getChannel();
destination.transferFrom(source, 0, source.size());
}
finally
{
if(source != null)
{
source.close();
}
if(destination != null)
{
destination.close();
}
}
return destinationFile;
}
Here’s how I would do it: