文件比较

2015-12-20 04:21:42  访问(1680) 赞(0) 踩(0)


        /// <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)