public TarArchiveEntry CreateEntryFromFile(string filepath, string entryName) { var file = File.OpenRead(filepath); var header = new TarIOFileHeader() { Filename = entryName, LastModified = File.GetLastWriteTime(filepath), Size = file.Length, Type = LinkIndicator.File }; lock (this) { baseStream.Seek(0, SeekOrigin.End); long written = header.Serialise(baseStream); long delta = TarIOBlockManager.BLOCK_SIZE - written; long padding = file.Length % TarIOBlockManager.BLOCK_SIZE; byte[] buffer = new byte[Math.Max(delta, padding)]; baseStream.Write(buffer, 0, (int)delta); file.CopyTo(baseStream); baseStream.Write(buffer, 0, (int)padding); return(new TarArchiveEntry(archive, header, null)); } }
internal TarArchiveEntry CreateEntry(string name, Stream data) { lock (this) { TarIOEntry entry; this.realEntries.Add(entry = new TarIOEntry() { Length = BLOCK_SIZE, Offset = baseStream.Length + BLOCK_SIZE, Entry = new TarArchiveEntry(archive, name, this.realEntries.Count), }); baseStream.Seek(0, SeekOrigin.End); baseStream.SetLength(baseStream.Length + BLOCK_SIZE * 2); var header = new TarIOFileHeader() { Filename = name, LastModified = DateTime.Now, Size = data.Length, Type = LinkIndicator.File }; header.Serialise(baseStream); entry.Stream = new TarIOFileItemStream(entry.Offset, entry.Length, baseStream); data.CopyTo(entry.Stream); return(entry.Entry); } }
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); } }
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)); }
public TarArchiveEntry CreateEntry(string name, Stream data) { var header = new TarIOFileHeader() { Filename = name, LastModified = DateTime.Now, Size = data.Length, Type = LinkIndicator.File }; long written = header.Serialise(BaseStream); long delta = TarIOBlockManager.BLOCK_SIZE - written; long padding = data.Length % TarIOBlockManager.BLOCK_SIZE; byte[] buffer = new byte[Math.Max(delta, padding)]; BaseStream.Write(buffer, 0, (int)delta); data.CopyTo(BaseStream); BaseStream.Write(buffer, 0, (int)padding); Position += TarIOBlockManager.BLOCK_SIZE + (int)padding + data.Length; return(new TarArchiveEntry(Archive, header, null)); }