public bool Move(FileInfo path, Func <bool> replace) { var oldFile = File; if (path.Exists) { if (replace()) { path.Delete(); } else { return(false); } } var stream = m_upToDateFile.Migrate(); m_upToDateFile.Dispose(); System.IO.File.Move(oldFile.FullName, path.FullName); m_upToDateFile = new UpToDateFile(stream, path, s => { }); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Moved.Execute(oldFile, File); return(true); }
public ReadOnlyFile(MemoryStream initialContent, FileInfo path, UpToDateFile.BackEnd backEnd) { m_upToDateFile = new UpToDateFile(initialContent, path, s => { }, backEnd); m_backEnd = backEnd; m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); }
public bool Move(FileInfo newPath, Func <bool> replace) { var oldFile = File; if (newPath.Exists) { if (replace()) { newPath.Delete(); } else { return(false); } } var stream = m_upToDateFile.Migrate(); newPath.Directory.EnsureExists(); //This can fail (returning false) if it does then we subsequently get a (hopefully) useful exception from File.Move System.IO.File.Move(File.FullName, newPath.FullName); m_upToDateFile.Dispose(); m_upToDateFile = new UpToDateFile(stream, newPath, m_saveTo, m_backEnd); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Moved.Execute(new Changed <FileInfo>(oldFile, File)); return(true); }
public SaveableFile(MemoryStream initialContent, FileInfo path, Action <Stream> saveTo) { m_upToDateFile = new UpToDateFile(initialContent, path, saveTo); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); m_saveTo = saveTo; m_lastSavedOrLoaded = initialContent; }
/// <summary> /// /// </summary> /// <param name="initialContent">Represents the current contents of the file. Reference is not held. A copy is made.</param> /// <param name="path"></param> /// <param name="saveTo"></param> protected SaveableFile(MemoryStream initialContent, FileInfo path, Action <Stream> saveTo, UpToDateFile.BackEnd backEnd) { m_upToDateFile = new UpToDateFile(initialContent, path, saveTo, backEnd); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); m_saveTo = saveTo; m_backEnd = backEnd; }
public void GotMoved(FileInfo newPath) { var oldFile = File; m_upToDateFile = new UpToDateFile(m_upToDateFile.Migrate(), newPath, s => { }); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Moved.Execute(oldFile, File); }
public void GotMoved(FileInfo newPath) { var oldFile = File; m_upToDateFile = new UpToDateFile(m_upToDateFile.Migrate(), newPath, m_saveTo, m_backEnd); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Moved.Execute(new Changed <FileInfo>(oldFile, File)); }
public void SaveAs(FileInfo path) { var oldPath = File; m_upToDateFile.Dispose(); m_upToDateFile = new UpToDateFile(new MemoryStream(), path, m_saveTo); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Save(); Moved.Execute(oldPath, File); }
public void SaveAs(FileInfo path) { var oldPath = File; m_upToDateFile.Dispose(); using (MemoryStream m = new MemoryStream()) { m_upToDateFile = new UpToDateFile(m, path, m_saveTo, m_backEnd); } m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); Save(); Moved.Execute(new Changed <FileInfo>(oldPath, File)); }
public ReadonlyFile(MemoryStream initialContent, FileInfo path) { m_upToDateFile = new UpToDateFile(initialContent, path, s => { }); m_upToDateFile.FileChanged += () => FileModifiedExternally.Execute(); m_upToDateFile.FileDeleted += () => FileDeletedExternally.Execute(); }