public override VolumeFile CreateFile(VolumePath path) { if (path.Depth == 0) { throw new KOSPersistenceException("Can't create a file over root directory"); } string archivePath = GetArchivePath(path); if (File.Exists(archivePath)) { throw new KOSPersistenceException("Already exists: " + path); } try { Directory.CreateDirectory(GetArchivePath(path.GetParent())); } catch (IOException) { throw new KOSPersistenceException("Parent directory for path does not exist: " + path.ToString()); } try { File.Create(archivePath).Dispose(); } catch (UnauthorizedAccessException) { throw new KOSPersistenceException("Could not create file: " + path); } return(Open(path) as VolumeFile); }
private HarddiskDirectory ParentDirectoryForPath(VolumePath path, bool create = false) { HarddiskDirectory directory = RootHarddiskDirectory; if (path.Depth > 0) { return(RootHarddiskDirectory.GetSubdirectory(path.GetParent(), create)); } else { throw new Exception("This directory does not have a parent"); } }
private HarddiskDirectory ParentDirectoryForPath(VolumePath path, bool create = false) { HarddiskDirectory directory = RootHarddiskDirectory; if (path.Depth > 0) { return RootHarddiskDirectory.GetSubdirectory(path.GetParent(), create); } else { throw new Exception("This directory does not have a parent"); } }
public override VolumeFile CreateFile(VolumePath path) { if (path.Depth == 0) { throw new KOSPersistenceException("Can't create a file over root directory"); } string archivePath = GetArchivePath(path); if (File.Exists(archivePath)) { throw new KOSPersistenceException("Already exists: " + path); } try { Directory.CreateDirectory(GetArchivePath(path.GetParent())); } catch (IOException) { throw new KOSPersistenceException("Parent directory for path does not exist: " + path.ToString()); } try { File.Create(archivePath).Dispose(); } catch (UnauthorizedAccessException) { throw new KOSPersistenceException("Could not create file: " + path); } return Open(path) as VolumeFile; }