Esempio n. 1
0
        public void LoadAndCleanSwap(ESave eSave)
        {
            mSwapSpace.Init();
            //mSwapSpace.Init(Path.Combine(GetArchiveRootDir(), "swap"));

            string dir = Load(eSave);

            if (!string.IsNullOrEmpty(dir))
            {
                Archive.Header header = mCurArchive.GetHeader();
                mSwapSpace.CopyFrom(dir, (fileInfo) =>
                {
                    try{
                        using (FileStream fs = fileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            using (BinaryReader r = new BinaryReader(fs))
                            {
                                Archive.Header other = new Archive.Header();
                                if (other.Read(r))
                                {
                                    if (header.IsMatch(other))
                                    {
                                        return(true);
                                    }
                                }
                            }
                        }
                    }catch (System.Exception e) {
                        Debug.LogWarning("[LoadAndCleanSwap]" + e);
                    }
                    return(false);
                });
            }
        }
Esempio n. 2
0
        public bool Open()
        {
            try
            {
                string filePath = Archive.GetFilePath(mPath, mIndex.fileName);

                if (!File.Exists(filePath))
                {
                    Debug.LogError("file not exist:" + filePath);
                    return(false);
                }


                mFileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                mReader     = new BinaryReader(mFileStream);

                Archive.Header header = new Archive.Header();

                if (!header.Read(mReader) || !header.IsMatch(mHeader))
                {
                    mReader.Close();
                    mReader = null;

                    mFileStream.Close();
                    mFileStream = null;

                    return(false);
                }

                mFileStream.Seek(mIndex.beginPos, SeekOrigin.Begin);

                return(true);
            }
            catch (Exception ex)
            {
                Debug.LogWarning(ex);
                return(false);
            }
        }