Esempio n. 1
0
        public FileSystemResultCode Save()
        {
            if (Mode == FileSystemMode.Read)
            {
                return(FileSystemResultCode.CantModifyError);
            }
            content.Flush();

            FileSystemResultCode resultCode  = FileSystemResultCode.Success;
            FileStream           indexStream = null;

            try
            {
                indexStream = new FileStream(IndexFilePath, FileMode.Create, FileAccess.Write, FileShare.None);
                chunk.WriteToStream(indexStream);
                fragment.WriteToStream(indexStream);

                indexStream.Flush();
            }
            catch
            {
                resultCode = FileSystemResultCode.IndexFileNotExistError;
            }
            finally
            {
                if (indexStream != null)
                {
                    indexStream.Close();
                }
            }
            return(resultCode);
        }
Esempio n. 2
0
        public FileSystemResultCode Open(FileSystemMode mode, string contentPath, string indexPath)
        {
            Mode            = mode;
            ContentFilePath = contentPath;
            IndexFilePath   = indexPath;

            if (Mode != FileSystemMode.Create && !File.Exists(ContentFilePath))
            {
                return(FileSystemResultCode.ContentFileNotExistError);
            }
            if (Mode != FileSystemMode.Create && !File.Exists(IndexFilePath))
            {
                return(FileSystemResultCode.IndexFileNotExistError);
            }

            content = new FileContent();
            chunk   = new FileChunk();
            if (Mode != FileSystemMode.Read)
            {
                fragment = new FileFragment();
            }

            FileSystemResultCode resultCode = FileSystemResultCode.Success;

            resultCode = content.OpenContent(ContentFilePath, Mode);
            if (resultCode == FileSystemResultCode.Success)
            {
                if (Mode != FileSystemMode.Create)
                {
                    FileStream indexStream = null;
                    try
                    {
                        indexStream = new FileStream(IndexFilePath, FileMode.Open, FileAccess.Read, FileShare.None);
                        resultCode  = chunk.ReadFromStream(indexStream);
                        if (resultCode == FileSystemResultCode.Success && fragment != null)
                        {
                            resultCode = fragment.ReadFromStream(indexStream);
                        }
                    }
                    catch
                    {
                        resultCode = FileSystemResultCode.IndexFileNotExistError;
                    }
                    finally
                    {
                        if (indexStream != null)
                        {
                            indexStream.Close();
                        }
                    }
                }
            }

            if (resultCode != FileSystemResultCode.Success)
            {
                content.Close();
                content  = null;
                fragment = null;
                chunk    = null;
            }

            return(resultCode);
        }