private FileComparisonResult CompareStreams(IFileSystemFile source, IFileSystemFile destination) { using (Stream sourceStream = source.GetStream()) { using (Stream destinationStream = destination.GetStream()) { var sourceBuffer = new byte[this.BufferSize]; var destinationBuffer = new byte[this.BufferSize]; int sourceReadCount; do { sourceReadCount = sourceStream.Read(sourceBuffer, 0, this.BufferSize); int destinationReadCount = destinationStream.Read(destinationBuffer, 0, this.BufferSize); if (sourceReadCount != destinationReadCount) { return FileComparisonResult.Differ; } for (int i = 0; i < sourceReadCount; i++) { if (sourceBuffer[i] != destinationBuffer[i]) { return FileComparisonResult.Differ; } } } while (sourceReadCount > 0); return FileComparisonResult.Same; } } }
public FileComparisonResult Compare(IFileSystemFile source, IFileSystemFile destination) { if (source.Size != destination.Size) { return FileComparisonResult.Differ; } return CompareStreams(source, destination); }
public string?Get(IFileSystemFile fileInfo) { if (!fileInfo.Exists) { return(null); } var extension = Path.GetExtension(fileInfo.Name); if (string.IsNullOrEmpty(extension) || !_mimeTypes.ContainsKey(extension)) { return(null); } return(_mimeTypes[extension]); }
public string Get(IFileSystemFile fileInfo) { var byteBuffer = new byte[256]; using (var fileStream = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)) { if (fileStream.Length >= 256) { fileStream.Read(byteBuffer, 0, 256); } else { fileStream.Read(byteBuffer, 0, (int)fileStream.Length); } } var extension = Path.GetExtension(fileInfo.Name) is null ? string.Empty : Path.GetExtension(fileInfo.Name).ToUpper(); return(GetInternal(byteBuffer, extension)); }
public string?Get(IFileSystemFile fileInfo) { if (!fileInfo.Exists) { return(null); } var byteBuffer = new byte[256]; using (var fileStream = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)) { if (fileStream.Length >= 256) { fileStream.Read(byteBuffer, 0, 256); } else { fileStream.Read(byteBuffer, 0, (int)fileStream.Length); } } FindMimeFromData(0, null, byteBuffer, 256, null, 0, out var MimeTypeNum, 0); var mimeTypePtr = new IntPtr(MimeTypeNum); var mimeTypeFromFile = Marshal.PtrToStringUni(mimeTypePtr); Marshal.FreeCoTaskMem(mimeTypePtr); if (string.IsNullOrEmpty(mimeTypeFromFile) || mimeTypeFromFile == "text/plain" || mimeTypeFromFile == "application/octet-stream") { return(null); } return(mimeTypeFromFile); }
public string?Get(IFileSystemFile fileInfo) { if (!fileInfo.Exists) { return(null); } var extension = Path.GetExtension(fileInfo.Name); using (var key = Registry.ClassesRoot.OpenSubKey(extension)) { if (key is null) { return(null); } if (key.GetValue("Content Type") is null) { return(null); } return(key.GetValue("Content Type")?.ToString()); } }
public FileComparisonResult Compare(IFileSystemFile source, IFileSystemFile destination) { return comparisonStrategy.Compare(source, destination); }