コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: BoxIntegration.cs プロジェクト: willcraftia/Blocks
        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();
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
ファイル: StorageManager.cs プロジェクト: willcraftia/Blocks
        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);
        }
コード例 #5
0
ファイル: StorageManager.cs プロジェクト: willcraftia/Blocks
        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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
 /// <summary>
 /// BlockMeshes ディレクトリをロードします。
 /// </summary>
 void LoadDirectory()
 {
     var rootDirectory = storageService.RootDirectory;
     if (rootDirectory.DirectoryExists(directoryName))
     {
         directory = rootDirectory.GetDirectory(directoryName);
     }
     else
     {
         directory = rootDirectory.CreateDirectory(directoryName);
     }
 }
コード例 #8
0
        /// <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;
        }
コード例 #9
0
        /// <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;
        }
コード例 #10
0
        /// <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;
        }