public IList Write(IList content) { Collection <JFSObject> pathObjects = provider.GetPathObjects(path); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSFile) { JFSFile fil = job as JFSFile; Collection <byte> bytes = new Collection <byte>(); foreach (var item in content) { string line = (item as string); if (line != null) { foreach (byte b in Encoding.UTF8.GetBytes(line)) { bytes.Add(b); } } } byte[] rawBytes = new byte[bytes.Count]; bytes.CopyTo(rawBytes, 0); fil.Write(rawBytes); } return(null); }
//protected virtual string MakePath(string parent, string child); //protected string MakePath(string parent, string child, bool childIsLeaf); protected override void MoveItem(string path, string destination) { if (PathIsDrive(path)) { WriteItemObject(this.PSDriveInfo, path, true); } Collection <JFSObject> pathObjects = JAFS.GetPathObjects(JAFSPath(path)); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSFolder) { JFSFolder fol = job as JFSFolder; if (ShouldProcess(path, "MoveItem")) { WriteItemObject(fol, path, false); fol.Move(JAFSPath(destination)); } } else if (job is JFSFile) { JFSFile fil = job as JFSFile; if (ShouldProcess(path, "MoveItem")) { WriteItemObject(fil, path, false); fil.Move(JAFSPath(destination)); } } else { ArgumentException e = new ArgumentException("Move not supported for this item"); //WriteError(new ErrorRecord(e, "MoveNotSupported", ErrorCategory.InvalidArgument, path)); throw e; } WriteItemObject(job, path, true); }
protected override void RenameItem(string path, string newName) { if (PathIsDrive(path)) { WriteItemObject(this.PSDriveInfo, path, true); } Collection <JFSObject> pathObjects = JAFS.GetPathObjects(JAFSPath(path)); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSFolder) { JFSFolder fol = job as JFSFolder; if (ShouldProcess(path, "RenameItem")) { WriteItemObject(fol, path, false); fol.Rename(newName); } } else if (job is JFSFile) { JFSFile fil = job as JFSFile; if (ShouldProcess(path, "RenameItem")) { WriteItemObject(fil, path, false); fil.Rename(newName); } } else { throw new ArgumentException("Rename not supported for this item"); } WriteItemObject(job, path, true); }
public IList Read(long readCount) { ArrayList blocks = new ArrayList(); Collection <JFSObject> pathObjects = provider.GetPathObjects(path); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSFile) { JFSFile fil = job as JFSFile; if (currentOffset > fil.SizeInBytes) { return(null); } if (currentOffset == 0 && readCount <= 0) { // Read everything blocks.AddRange(fil.Read().ToCharArray()); } else { ulong endPos = fil.SizeInBytes; if (readCount > 0) { endPos = currentOffset + (ulong)readCount; if (endPos > fil.SizeInBytes) { endPos = fil.SizeInBytes; } } blocks.AddRange(fil.ReadPartial(currentOffset, endPos).ToCharArray()); } return(blocks); } else { return(null); } }
public void Seek(long offset, SeekOrigin origin) { if (origin == System.IO.SeekOrigin.Begin) { if (offset > 0) { currentOffset = (ulong)(offset - 1); } else { currentOffset = 0; } } else if (origin == System.IO.SeekOrigin.End) { Collection <JFSObject> pathObjects = provider.GetPathObjects(path); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSFile) { JFSFile fil = job as JFSFile; if (fil.SizeInBytes <= 1) { currentOffset = 0; } else if (offset > 0) { if ((ulong)offset >= fil.SizeInBytes) { currentOffset = 0; } else { currentOffset = fil.SizeInBytes - 1 - (ulong)offset; } } else { currentOffset = 0; } } else { currentOffset = 0; } } else { if (offset < 0) { if ((ulong)(-1 * offset) >= currentOffset) { currentOffset = 0; } else { currentOffset += (ulong)offset; } } else { currentOffset += (ulong)offset; } } }
protected override void RemoveItem(string path, bool recurse) { RemoveItemDynamicParameters parameters = DynamicParameters as RemoveItemDynamicParameters; if (PathIsDrive(path)) { throw new ArgumentException("Remove not supported for this item"); } Collection <JFSObject> pathObjects = JAFS.GetPathObjects(JAFSPath(path)); JFSObject job = pathObjects.Count > 0 ? pathObjects[pathObjects.Count - 1] : null; if (job is JFSDevice) { JFSDevice dev = job as JFSDevice; if (parameters.Permanent) { if (ShouldProcess(path, "RemoveItem")) { JAFS.DeleteDevicePermanently(dev); } } else { throw new ArgumentException("Devices can only be removed permanently"); } } else if (job is JFSMountPoint) { JFSMountPoint mnt = job as JFSMountPoint; if (parameters.Permanent) { JFSDevice dev = pathObjects.Count > 1 ? pathObjects[pathObjects.Count - 2] as JFSDevice : null; // Parent is the device if (dev == null) { throw new ArgumentException("Failed to find parent item needed for permanent remove"); } if (ShouldProcess(path, "RemoveItem")) { dev.DeleteMountPointPermanently(mnt); } } else { if (ShouldProcess(path, "RemoveItem")) { mnt.Delete(); } } } else if (job is JFSFolder) { JFSFolder fol = job as JFSFolder; if (parameters.Permanent) { JFSObject parent = pathObjects.Count > 1 ? pathObjects[pathObjects.Count - 2] : null; if (parent is JFSMountPoint) { JFSMountPoint mnt = parent as JFSMountPoint; if (mnt == null) { throw new ArgumentException("Failed to find parent item needed for permanent remove"); } if (ShouldProcess(path, "RemoveItem")) { mnt.DeleteFolderPermanently(fol); } } else if (parent is JFSFolder) { JFSFolder pf = parent as JFSFolder; if (pf == null) { throw new ArgumentException("Failed to find parent item needed for permanent remove"); } if (ShouldProcess(path, "RemoveItem")) { pf.DeleteFolderPermanently(fol); } } } else { if (ShouldProcess(path, "RemoveItem")) { fol.Delete(); } } } else if (job is JFSFile) { JFSFile fil = job as JFSFile; if (parameters.Permanent) { JFSObject parent = pathObjects.Count > 1 ? pathObjects[pathObjects.Count - 2] : null; if (parent is JFSMountPoint) { JFSMountPoint mnt = parent as JFSMountPoint; if (mnt == null) { throw new ArgumentException("Failed to find parent item needed for permanent remove"); } if (ShouldProcess(path, "RemoveItem")) { mnt.DeleteFilePermanently(fil); } } else if (parent is JFSFolder) { JFSFolder pf = parent as JFSFolder; if (pf == null) { throw new ArgumentException("Failed to find parent item needed for permanent remove"); } if (ShouldProcess(path, "RemoveItem")) { pf.DeleteFilePermanently(fil); } } } else { if (ShouldProcess(path, "RemoveItem")) { fil.Delete(); } } } else { throw new ArgumentException("Remove not supported for this item"); } }