Implemented as LastnameCopy Copies files from source directo
Implemented as LastnameCopy: Copies files from source directory to destination directory based on file filter. If no filter is provided, all files are copied. It must take at least two arguments: the source directory/file and the destination directory/file. An optional third argument (file filter) may or may not be provided. If the destination directory already has the file with the same name, then the program should display the name of the file and ask if user wants to overwrite it (y for yes, n for no). Also, if user wants to (or not to) overwrite all remaining files, he/she can do that by using Y for overwriting all remaining files or N for not overwriting all remaining files. At the end, the command should display the total number of files in directory, the file number of files copied, and the number of files not copied. /// Copy file from source to destination. The directories up to /// destination will be created if they don\'t already exist. /// destination will be overwritten if it already exists. /// The copy will have the same file date as the original. /// /// An existing non-directory to copy /// A non-directory to write bytes to /// /// /// Ported from Jakarta Commons IO FileUtils public static void CopyFile(FileInfo source, FileInfo destination) { CopyFile(source, destination, yes, yes); } /// /// Copy file from source to destination. The directories up to /// destination will be created if they don\'t already exist. /// /// An existing non-directory to copy /// A non-directory to write bytes to /// flag to indicate if the file date of /// the copy should be the same as the original. /// Flag to indicate if the file /// is to be overwritten if already exists /// /// /// Ported from Jakarta Commons IO FileUtils public static void CopyFile(FileInfo source, FileInfo destination, bool preserveFileDate, bool overwriteIfExists) { //check source exists if (!source.Exists) { string message = \"File \'\" + source.FullName + \"\' desnt exist\"; throw new FileNotFoundException(message); } //does destinations directory exist ? if (destination.Directory != null && !destination.Directory.Exists) { destination.Directory.Create(); } //make sure we can write to destination if (destination.Exists && (destination.Attributes & FileAttributes.ReadOnly)== FileAttributes.ReadOnly) { String message = \"cant open file \'\" + destination.FullName + \"\' for writing.\"; throw new IOException(message); } //makes sure it is not the same file if (source.DirectoryName.Equals(destination.DirectoryName)) { String message = \"cant write file \'\" + source + \"\' on itself.\"; throw new IOException(message); } File.Copy(source.FullName, destination.FullName, overwriteIfExists); destination.Refresh(); if (source.Length != destination.Length) { String message = \"Failed to copy full contents from \" + source.FullName + \" to \" + destination.FullName; throw new IOException(message); } if (preserveFileDate) { destination.LastWriteTime = source.LastWriteTime; } } /// /// Copy all the files in a directory into a destination folder. This operation performs /// a deep copy, meaning it copies all the files in the subdirectory inside the source directory. /// /// source directory to copy from /// destination to copy to /// If the source directory does not exist /// if an I/O error occurs while copying the files public static void CopyFiles(string sourcePath, string destinationPath) { CopyFiles(new DirectoryInfo(sourcePath), new DirectoryInfo(destinationPath)); } /// /// Copy all the files in a directory into a destination folder. This operation performs /// a deep copy, meaning it copies all the files in the subdirectory inside the source directory. /// /// source directory to copy from /// destination to copy to /// If the source directory does not exist /// if an I/O error occurs while copying the files public static void CopyFiles(DirectoryInfo source, DirectoryInfo destination) { if (!source.Exists) throw new ArgumentException(string.Format(\"Source directory \'{0}\' desnt exist\", source)); if (!destination.Exists) destination.Create(); FileInfo[] sourceFiles = source.GetFiles(); foreach (FileInfo file in sourceFiles) { file.CopyTo(destination.FullName + Path.DirectorySeparatorChar + file.Name); } DirectoryInfo[] subdirs = source.GetDirectories(); foreach (DirectoryInfo subdir in subdirs) { DirectoryInfo destSubDir = Directory.CreateDirectory(destination.FullName + Path.DirectorySeparatorChar + subdir.Name); CopyFiles(subdir, destSubDir); } } } }
Solution
using System; using System.Collections; using System.Globalization; using System.IO; namespace Dotnet.Commons.IO { class M1Class { public static void CopyFile(string source, string destination) { FileInfo sourceFile = new FileInfo(source); FileInfo destFile = new FileInfo(destination); CopyFile(sourceFile, destFile); } ///