Provides a file stream that can be used to open a file and does all of the background work required to translate virtual position data into physical ones.
Inheritance: ISupportsBinaryStream
        /// <summary>
        /// Releases the unmanaged resources used by the <see cref="SimplifiedFileWriter"/> object and optionally releases the managed resources.
        /// </summary>
        /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (!m_disposed)
            {
                try
                {
                    // This will be done regardless of whether the object is finalized or disposed.

                    if (disposing)
                    {
                        if (m_subFileStream != null)
                        {
                            m_subFileStream.Dispose();
                            m_subFileStream = null;
                        }
                        if (m_stream != null)
                        {
                            m_stream.Dispose();
                        }
                        File.Delete(m_pendingFileName);
                        // This will be done only when the object is disposed by calling Dispose().
                    }
                }
                finally
                {
                    m_disposed = true;  // Prevent duplicate dispose.
                }
            }
        }
 private void CloseCurrentFile()
 {
     if (m_subFileStream is null)
     {
         return;
     }
     if (!m_subFileStream.IsDisposed)
     {
         throw new Exception("The previous file must be disposed before completing this action");
     }
     m_subFileStream = null;
 }
        /// <summary>
        /// Creates and Opens a new file on the current file system.
        /// </summary>
        /// <returns></returns>
        public ISupportsBinaryStream CreateFile(SubFileName fileName)
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }
            CloseCurrentFile();

            SubFileHeader subFile = m_fileHeaderBlock.CreateNewFile(fileName);

            subFile.DirectBlock = m_fileHeaderBlock.LastAllocatedBlock + 1;
            m_subFileStream     = new SimplifiedSubFileStream(m_stream, subFile, m_fileHeaderBlock);
            return(m_subFileStream);
        }
        /// <summary>
        /// Creates and Opens a new file on the current file system.
        /// </summary>
        /// <returns></returns>
        public ISupportsBinaryStream CreateFile(SubFileName fileName)
        {
            if (m_disposed)
                throw new ObjectDisposedException(GetType().FullName);
            CloseCurrentFile();

            var subFile = m_fileHeaderBlock.CreateNewFile(fileName);
            subFile.DirectBlock = m_fileHeaderBlock.LastAllocatedBlock + 1;
            m_subFileStream = new SimplifiedSubFileStream(m_stream, subFile, m_fileHeaderBlock);
            return m_subFileStream;
        }
 void CloseCurrentFile()
 {
     if (m_subFileStream == null)
         return;
     if (!m_subFileStream.IsDisposed)
         throw new Exception("The previous file must be disposed before completing this action");
     m_subFileStream = null;
 }
        /// <summary>
        /// Releases the unmanaged resources used by the <see cref="SimplifiedFileWriter"/> object and optionally releases the managed resources.
        /// </summary>
        /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (!m_disposed)
            {
                try
                {
                    // This will be done regardless of whether the object is finalized or disposed.

                    if (disposing)
                    {
                        if (m_subFileStream != null)
                        {
                            m_subFileStream.Dispose();
                            m_subFileStream = null;
                        }
                        if (m_stream != null)
                        {
                            m_stream.Dispose();
                        }
                        File.Delete(m_pendingFileName);
                        // This will be done only when the object is disposed by calling Dispose().
                    }
                }
                finally
                {
                    m_disposed = true;  // Prevent duplicate dispose.
                }
            }
        }