/// <summary> /// サブ ディレクトリを作成します。 /// 指定の名前のサブ ディレクトリが既に存在する場合は例外が発生します。 /// </summary> /// <param name="name">サブ ディレクトリ名。</param> /// <returns>サブ ディレクトリの StorageDirectory。</returns> public StorageDirectory CreateDirectory(string name) { if (DirectoryExists(name)) { throw new InvalidOperationException(string.Format("The directory '{0}' already exists.", name)); } // サブ ディレクトリを作成します。 var path = ResolveChildPath(name); container.CreateDirectory(path); // サブ ディレクトリの StorageDirectory を作成します。 var directory = new StorageDirectory(container, name, path); directory.CreateIndexFile(); // Index にサブ ディレクトリの情報を追加して保存します。 index.DirectoryNames.Add(name); SaveIndexFile(); // todo IndexChanged(this, EventArgs.Empty); return(directory); }
public void Initialize() { if (storageService.RootDirectory.DirectoryExists(IntegrationDirectoryName)) { integrationDirectory = storageService.RootDirectory.GetDirectory(IntegrationDirectoryName); } else { integrationDirectory = storageService.RootDirectory.CreateDirectory(IntegrationDirectoryName); } if (integrationDirectory.FileExists(SettingsFileName)) { try { using (var stream = integrationDirectory.OpenFile(SettingsFileName, FileMode.Open)) { boxSettings = settingsSerializer.Deserialize(stream) as BoxSettings; } } catch { // デシリアライズに失敗する場合は、保存されている設定を削除します。 integrationDirectory.DeleteFile(SettingsFileName); } } else { boxSettings = new BoxSettings(); } }
/// <summary> /// サブ ディレクトリの StorageDirectory を取得します。 /// </summary> /// <param name="name">サブ ディレクトリ名。</param> /// <returns>サブ ディレクトリの StorageDirectory。</returns> public StorageDirectory GetDirectory(string name) { if (!DirectoryExists(name)) { throw new InvalidOperationException(string.Format("The directory '{0}' does not exists.", name)); } var path = ResolveChildPath(name); var directory = new StorageDirectory(container, name, path); directory.LoadIndexFile(); return(directory); }
public override void Update(GameTime gameTime) { // RootDirectory の反映とイベント送信は、Game Thread で行うことを保証します。 lock (syncRoot) { if (containerChanged) { RootDirectory = StorageDirectory.GetRootDirectory(container); containerChanged = false; ContainerSelected(this, EventArgs.Empty); } } base.Update(gameTime); }
/// <summary> /// StorageContainer のルート ディレクトリの StorageDirectory を取得します。 /// このメソッドは、ルート ディレクトリに StorageDirectoryIndex が存在しない場合、 /// サブ ディレクトリおよびファイルが空の StorageDirectoryIndex を生成して保存します。 /// </summary> /// <param name="container">StorageContainer。</param> /// <returns>ルート ディレクトリの StorageDirectory。</returns> internal static StorageDirectory GetRootDirectory(StorageContainer container) { if (container == null) { throw new ArgumentNullException("container"); } // ルート ディレクトリのための StorageDirectory を初期化します。 var directory = new StorageDirectory(container, null, null); if (container.FileExists(indexFileName)) { directory.LoadIndexFile(); } else { directory.CreateIndexFile(); } return(directory); }
/// <summary> /// BlockMeshes ディレクトリをロードします。 /// </summary> void LoadDirectory() { var rootDirectory = storageService.RootDirectory; if (rootDirectory.DirectoryExists(directoryName)) { directory = rootDirectory.GetDirectory(directoryName); } else { directory = rootDirectory.CreateDirectory(directoryName); } }
/// <summary> /// サブ ディレクトリの StorageDirectory を取得します。 /// </summary> /// <param name="name">サブ ディレクトリ名。</param> /// <returns>サブ ディレクトリの StorageDirectory。</returns> public StorageDirectory GetDirectory(string name) { if (!DirectoryExists(name)) throw new InvalidOperationException(string.Format("The directory '{0}' does not exists.", name)); var path = ResolveChildPath(name); var directory = new StorageDirectory(container, name, path); directory.LoadIndexFile(); return directory; }
/// <summary> /// サブ ディレクトリを作成します。 /// 指定の名前のサブ ディレクトリが既に存在する場合は例外が発生します。 /// </summary> /// <param name="name">サブ ディレクトリ名。</param> /// <returns>サブ ディレクトリの StorageDirectory。</returns> public StorageDirectory CreateDirectory(string name) { if (DirectoryExists(name)) throw new InvalidOperationException(string.Format("The directory '{0}' already exists.", name)); // サブ ディレクトリを作成します。 var path = ResolveChildPath(name); container.CreateDirectory(path); // サブ ディレクトリの StorageDirectory を作成します。 var directory = new StorageDirectory(container, name, path); directory.CreateIndexFile(); // Index にサブ ディレクトリの情報を追加して保存します。 index.DirectoryNames.Add(name); SaveIndexFile(); // todo IndexChanged(this, EventArgs.Empty); return directory; }
/// <summary> /// StorageContainer のルート ディレクトリの StorageDirectory を取得します。 /// このメソッドは、ルート ディレクトリに StorageDirectoryIndex が存在しない場合、 /// サブ ディレクトリおよびファイルが空の StorageDirectoryIndex を生成して保存します。 /// </summary> /// <param name="container">StorageContainer。</param> /// <returns>ルート ディレクトリの StorageDirectory。</returns> internal static StorageDirectory GetRootDirectory(StorageContainer container) { if (container == null) throw new ArgumentNullException("container"); // ルート ディレクトリのための StorageDirectory を初期化します。 var directory = new StorageDirectory(container, null, null); if (container.FileExists(indexFileName)) { directory.LoadIndexFile(); } else { directory.CreateIndexFile(); } return directory; }