单个文件比较

2015-12-20 04:46:58  访问(1403) 赞(0) 踩(0)


相关下载:百度网盘  SlowX.CompareOneFileApp[code]  SlowX.CompareOneFileApp[release]     



  • 
            /// <summary>
            /// byte数组的比较
            /// </summary>
            /// <param name="one"></param>
            /// <param name="two"></param>
            /// <returns></returns>
            protected bool CompareByteArray(byte[] one, byte[] two)
            {
                if (one == null && two == null)
                    return true;
    
                if (one.Length != two.Length)
                    return false;
    
                int iLen = one.Length;
    
                for (int i = 0; i < iLen; ++i)
                {
                    if (one[i] != two[i])
                        return false;
                }
    
                return true;
            }
    
            /// <summary>
            /// 文件比较
            /// </summary>
            /// <param name="sFullName"></param>
            /// <param name="dFullName"></param>
            /// <returns></returns>
            protected string FileCompare(string sFullName, string dFullName)
            {
    
                FileStream sourceFileStream = null;
                FileStream destFileStream = null;
    
                string theResult = "";
    
                try
                {
    
                    int iSize = 1024;
                    int sourceReadCount = 0;
                    int destReadCount = 0;
                    byte[] sourceBuffer = new byte[iSize];
                    byte[] destBuffer = new byte[iSize];
    
                    sourceFileStream = new FileStream
                        (
                            sFullName, 
                            FileMode.Open
                        );
    
                    destFileStream = new FileStream
                        (
                            dFullName, 
                            FileMode.Open
                        );
    
    
                    if (sourceFileStream.Length != destFileStream.Length)
                    {
                        return "文件大小不一致。";
                    }
    
    
                    sourceFileStream.Seek(0, SeekOrigin.Begin);
    
    
                    while (true)
                    {
                        sourceReadCount = sourceFileStream.Read(sourceBuffer, 0, iSize);
                        destReadCount = destFileStream.Read(destBuffer, 0, iSize);
    
    
                        if (sourceReadCount != destReadCount)
                        {
                            theResult = "文件大小不一致。";
                            break;
                        }
    
                        if (sourceReadCount == 0)
                            break;
    
                        // 比较Buffer //
                        if (!CompareByteArray(sourceBuffer, destBuffer))
                        {
                            theResult = "不相同。";
                            break;
                        }
    
                    }
    
                     
    
                }
                catch (Exception err)
                {
                    throw err;
                }
                finally
                {
                    if (sourceFileStream != null)
                    {
                        sourceFileStream.Close();
                        sourceFileStream.Dispose();
                        sourceFileStream = null;
                    }
    
                    if (destFileStream != null)
                    {
                        destFileStream.Close();
                        destFileStream.Dispose();
                        destFileStream = null;
                    }
                }
    
    
                return theResult;
    
     
            }
    
    

标签:单个文件比较 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)