私はファイルを持っています:
string myFile = @"C:\Users\Nick\Desktop\myFile.txt";
そして、このファイルのコピーが別のディレクトリにあるかどうかを確認したいと思います。
string DestinationDir = @"C:\Users\Nick\Desktop\MyDir"
どうすればこれを達成できますか?
私が知っている最も簡単な方法は、 System.IO名前空間でPathクラスとFileクラスを利用する方法です。
Path.Combineメソッドを使用して、宛先ディレクトリのパスを検索するファイルの名前と組み合わせることができます(Path.GetFileNameメソッドによって返されます)。
string dest_file = Path.Combine(dest_dir, Path.GetFileName(source_file));
この時点で、 File.Existsメソッドdest_file
で存在するかどうかを簡単に確認できます。
if (File.Exists(dest_file))
{
// You can get file properties using the FileInfo class
FileInfo info_dest = new FileInfo(dest_file);
FileInfo info_source = new FileInfo(source_file);
// And to use the File.OpenRead method to create the FileStream
// that allows you to compare the two files
FileStream stream_dest = info_dest.OpenRead();
FileStream stream_source = info_source.OpenRead();
// Compare file streams here ...
}
ここでは、FileStreamを使用して2つのファイルを比較する方法を説明する記事を紹介します。
ファイルが宛先ディレクトリに存在するかどうかを確認する別の方法もあります。Directoryクラス、特にメソッドDirectory.GetFilesを確認してください。
foreach (string dest_file in Directory.GetFiles(dest_dir))
{
// Compare dest_file name with source_file name
// and so on...
}
からファイル名を抽出し、それmyFile
に使用してDestinationDir +ファイル名の新しいパスを作成し、 File.ExistsPath.Combine
を使用してファイルが存在するかどうかを確認します。
2つのファイルを比較するには、次のことを試してください。
public static IEnumerable<string> ReadLines(string path)
public static IEnumerable<string> ReadLines(string path, Encoding encoding)
bool same = File.ReadLines(path1).SequenceEqual(File.ReadLines(path2));
このスレッドを確認してください:.NETを使用して2つのファイルを高速に比較するにはどうすればよいですか?