NLog.Targets.FileTarget.ArchiveFile C# (CSharp) Method

ArchiveFile() private method

Archives fileName to archiveFileName.
private ArchiveFile ( string fileName, string archiveFileName ) : void
fileName string File name to be archived.
archiveFileName string Name of the archive file.
return void
        private void ArchiveFile(string fileName, string archiveFileName)
        {
            FinalizeFile(fileName, isArchiving: true);

            string archiveFolderPath = Path.GetDirectoryName(archiveFileName);
            if (!Directory.Exists(archiveFolderPath))
                Directory.CreateDirectory(archiveFolderPath);

            if (EnableArchiveFileCompression)
            {
                InternalLogger.Info("Archiving {0} to compressed {1}", fileName, archiveFileName);
                FileCompressor.CompressFile(fileName, archiveFileName);
                DeleteAndWaitForFileDelete(fileName);
            }
            else
            {
                InternalLogger.Info("Archiving {0} to {1}", fileName, archiveFileName);
                if (File.Exists(archiveFileName))
                {
                    //todo handle double footer
                    InternalLogger.Info("Already exists, append to {0}", archiveFileName);
                    
                    //todo maybe needs a better filelock behaviour

                    //copy to archive file.
                    using (FileStream fileStream = File.Open(fileName, FileMode.Open))
                    using (FileStream archiveFileStream = File.Open(archiveFileName, FileMode.Append ))
                    {
                        fileStream.CopyAndSkipBom(archiveFileStream, Encoding);
                        //clear old content
                        fileStream.SetLength(0);
                        fileStream.Close(); // This flushes the content, too.
#if NET3_5
                        archiveFileStream.Flush();
#else
                        archiveFileStream.Flush(true);
#endif
                    }
                }
                else
                {
                    File.Move(fileName, archiveFileName);
                }
            }
        }