public WriteTextFile(IDirectoryFile directoryFile) { _directoryFile = directoryFile; }
public void AddFile(IDirectoryFile fi, string basePath) { _bw.Write(new TarHeader(fi, basePath).Bytes); BinaryReader br = new BinaryReader(fi.ContentStream); while (br.BaseStream.Position < br.BaseStream.Length) _bw.Write(br.ReadBytes(1024)); AlignTo512(br.BaseStream.Length, false); }
public TarHeader(IDirectoryFile fi, string basePath) : this(fi.CreateDate,Utility.TraceFullFilePath(fi),basePath) { _size = fi.Length; }
public ReadFromFile(IDirectoryFile directoryFile) { _directoryFile = directoryFile; }
internal static string TraceFullFilePath(IDirectoryFile file) { return TraceFullDirectoryPath(file.Folder) + "/" + file.Name; }
private void LocateObjectForPath(string path, IDirectoryFolder folder, out IDirectoryFolder resFold, out IDirectoryFile resFile) { string dirname = path.Substring(0, path.IndexOf("/")); path = path.Substring(dirname.Length + 1); IDirectoryFolder[] folders = folder.Folders; IDirectoryFile[] files = folder.Files; folder = null; foreach (IDirectoryFolder id in folders) { if (id.Name == dirname) { folder = id; break; } } resFile = null; resFold = null; bool isFile = false; if (folder == null) { foreach (IDirectoryFile fi in files) { if (fi.Name == dirname) { isFile = true; resFile = fi; break; } } } if ((path == "/"||path=="") && !isFile) resFold = folder; if ((path != "/") && (resFold == null) && (resFile==null) && (folder!=null)) LocateObjectForPath(path, folder, out resFold, out resFile); }