C# es un lenguaje de programación de propósito general, moderno y orientado a objetos pronunciado como “C Sharp”, en el que podemos crear archivos. A veces necesitamos realizar operaciones en el archivo. Esta operación puede ser cualquier cosa, desde comparar archivos byte a byte o necesitar verificar las fechas o la longitud de los archivos.
Para obtener esto, tenemos algunas clases como FileStream, FileInfo que se incluyen en el espacio de nombres System.IO.
Para realizar la comparación de archivos:
Para la comparación de archivos, tenemos varias opciones, ya sea podemos hacer un flujo de archivos y verificar el archivo byte por byte. C# tiene una clase FileInfo que también se puede usar para comparar la longitud o su fecha de creación. FileInfo es una clase sellada, lo que significa que no se puede heredar. Aquí vamos a utilizar dos clases FileStream y FileInfo para las comparaciones.
FileInfo de clase pública sellada: System.IO.FileSystemInfo
Clase pública FileStream: System.IO.Stream
Ejemplo 1:
C#
// Use FileInfo Class in C# using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FileInfo1 { internal class Program { static void Main(string[] args) { FileInfo f1 = new FileInfo(@"C:\test\test1.txt"); FileInfo f2 = new FileInfo(@"C:\test\test2.txt"); // checking the size of siles if(f1.Length != f2.Length) { Console.WriteLine("File sizes are not equal"); } else { Console.WriteLine("File sizes are equal"); } //for getting Creation time Console.WriteLine("first file creatuin date is " + f1.CreationTime); Console.WriteLine("second file creatuin date is " + f2.CreationTime); //For getting parent directory Console.WriteLine("first file parent Directory is " + f1.Directory); Console.WriteLine("second file parent Directory is " + f2.Directory); Console.Read(); } } }
Producción:
Ejemplo 2:
C#
// Use FileStream Class in C# using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace use_file_stream { internal class Program { static void Main(string[] args) { string path1 = @"C:\test\test1.txt"; string path2 = @"C:\test\test2.txt"; using(FileStream fs1 = new FileStream(path1, FileMode.Open), fs2 = new FileStream(path2, FileMode.Open)) { int c1 = 0; int c2 = 0; do { c1 = fs1.ReadByte(); c2 = fs2.ReadByte(); } while (c1 == c2 && c1!=-1 && c2!=-1); if (c1 == c2) { Console.WriteLine("Files are equal"); } else{ Console.WriteLine("Files are not equal"); } Console.ReadLine(); } } } }
Producción: