Пример #1
0
        public TarArchiveEntry CreateEntry(string entryName)
        {
            LinkIndicator type = LinkIndicator.File;

            if (entryName.EndsWith("\\") || entryName.EndsWith("/"))
            {
                type = LinkIndicator.Directory;
            }

            lock (this)
            {
                int  index  = this.realEntries.Count;
                long offset = this.baseStream.Length + BLOCK_SIZE;

                var header = new TarIOFileHeader()
                {
                    Type         = type,
                    Filename     = entryName,
                    LastModified = DateTime.Now,
                    Size         = 0
                };

                this.baseStream.Seek(0, SeekOrigin.End);
                long written = header.Serialise(this.baseStream);
                long delta   = BLOCK_SIZE - written;

                byte[] buffer = new byte[delta];
                this.baseStream.Write(buffer, 0, buffer.Length);
            }
        }
Пример #2
0
        public TarArchiveEntry CreateEntry(string name)
        {
            LinkIndicator type = LinkIndicator.File;

            if (name.EndsWith("\\") || name.EndsWith("/"))
            {
                type = LinkIndicator.Directory;
            }

            var header = new TarIOFileHeader()
            {
                Filename     = name,
                LastModified = DateTime.Now,
                Size         = 0,
                Type         = type
            };

            long written = header.Serialise(BaseStream);
            long delta   = TarIOBlockManager.BLOCK_SIZE - written;

            byte[] buffer = new byte[delta];
            BaseStream.Write(buffer, 0, (int)delta);

            Position += TarIOBlockManager.BLOCK_SIZE;
            return(new TarArchiveEntry(Archive, header, null));
        }