■ FileStream 클래스를 사용해 파일 동일 여부를 구하는 방법을 보여준다.
▶ FileStream 클래스 : 파일 동일 여부 구하기 예제
1 2 3 4 5 6 7 8 |
FileInfo fileInfo1 = new FileInfo("d:\\source1.txt"); FileInfo fileInfo2 = new FileInfo("d:\\source2.txt"); bool result = Equals(fileInfo1, fileInfo2); Console.WriteLine(result); |
▶ FileStream 클래스 : 파일 동일 여부 구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#region 동일 여부 구하기 - Equals(fileInfo1, fileInfo2) /// <summary> /// 동일 여부 구하기 /// </summary> /// <param name="fileInfo1">파일 정보 1</param> /// <param name="fileInfo2">파일 정보 2</param> /// <returns>동일 여부</returns> public bool Equals(FileInfo fileInfo1, FileInfo fileInfo2) { const int BYTE_COUNT_TO_READ = sizeof(long); if(fileInfo1.Length != fileInfo2.Length) { return false; } if(string.Equals(fileInfo1.FullName, fileInfo2.FullName, StringComparison.OrdinalIgnoreCase)) { return true; } int iterationCount = (int)Math.Ceiling((double)fileInfo1.Length / BYTE_COUNT_TO_READ); using(FileStream fileStream1 = fileInfo1.OpenRead()) { using(FileStream fileStream2 = fileInfo2.OpenRead()) { byte[] byteArray1 = new byte[BYTE_COUNT_TO_READ]; byte[] byteArray2 = new byte[BYTE_COUNT_TO_READ]; for(int i = 0; i < iterationCount; i++) { fileStream1.Read(byteArray1, 0, BYTE_COUNT_TO_READ); fileStream2.Read(byteArray2, 0, BYTE_COUNT_TO_READ); if(BitConverter.ToInt64(byteArray1, 0) != BitConverter.ToInt64(byteArray2, 0)) { return false; } } } } return true; } #endregion |