Dosyanın orada olup olmadığını kontrol edin
özet
Belirtilen dosyanın var olduğunu doğrular.
Çalışma ortamı
Önkoşullar
Desteklenen XNA Sürümleri |
|
Desteklenen Platformlar |
|
Windows Gerekli Köşe Gölgelendiricisi Sürümü | 1.1 |
Windows Gerekli Pixel Shader Sürümü | 1.1 |
Çalışma ortamı
peron |
Örnek ile nasıl çalışılır
Çalışıyor klavyeXbox | 360 denetleyicisifare | ||
---|---|---|---|
Bir dosyanın varlığını kontrol etmek için bir cihaz seçme | A | A | - |
madde
Dosyanın varlığını denetlemek istediğiniz hedef dosya
Bu örnekte dosyanın varlığının denetlendiği hedef dosyalar aşağıdaki dosyalardır.
- Yazı tipi dosyası "Font.xnb" (bu örnekte her zaman bulunur)
- Sahte dosya "AAA.txt" (var olmayan dosya)
- Veri depolama dosyası "SaveData.txt" (bu dosyayı diğer XNA örnekleriyle oluşturup oluşturmadığınıza bağlı olarak)
Yukarıdaki üç dosya için bir dosya olup olmadığını kontrol edin, ancak özellikle üçüncü dosya için, dosyanın mevcut olup olmadığı, "Veri kaydetme" bölümündeki ipuçlarıyla kaydedilen dosyaya ve depolama aygıtının seçimine bağlıdır.
alan
Her dosya için, dosyanın var olup olmadığını belirten bir bayrak değişkeni sağlayın. Kaydedilen veri dosyasını kaydetme cihazını seçmeden kontrol edemezsiniz, böylece "bool?" kullanabilirsiniz. ve işaretlenene kadar null değerini değiştirin.
<summary>
保存したデータが存在するか
</summary>
private bool? isExistSaveDataFile = null;
<summary>
フォントファイルが存在するか
</summary>
private bool isExistFontFile = false;
<summary>
ダミーファイルが存在するか
</summary>
private bool isExistDummyFile = false;
System.IO ad alanı
Dosyayla ilgili sınıflar kullandığınız için, önceden System.IO ad alanını kullanabildiğinizden emin olun. (burada "System.IO kullanarak;" Sınıf adını doğrudan ad alanından da belirtebilirsiniz.)
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
Yazı tipi dosyası yolu
Yazı tipi dosyasının yolu, yürütülebilir dosyayı içeren klasörün Content klasöründe olduğundan, klasörün yolunu yürütülebilir dosyayla (StorageContainer.TitleLocation özelliği tarafından elde edilir) ve Path.Combine yöntemini kullanarak yazı tipi dosyasını içeren klasörün yolunu birleştirin.
Sahte dosyanın yoluna gelince, dosya olmadığı sürece herhangi bir yerde olabilir.
// フォントファイルのパス
string fontFilePath =
Path.Combine(StorageContainer.TitleLocation, @"Content\Font.xnb");
Bir dosyanın varlığını kontrol etme
Bir dosyanın var olup olmadığını denetlemek için File.Exists yöntemini kullanın.
// フォントファイルがあるか確認する
this.isExistFontFile = File.Exists(fontFilePath);
File.Exists yönteminin ilk bağımsız değişkeni dosya yoludur ve dosya varsa true döndürülür. Dosya yoksa, false döndürülür.
File.Exists
yöntem
Belirtilen dosyanın var olup olmadığını kontrol eder.
yol | dizgi | Kontrol edilecek dosya. |
Dönüş Değerleri | Bool | Belirtilen bir dosya varsa true; dosya yoksa false. |
Depolamaya kaydedilen dosyaların varlığını kontrol etme
Depolama alanına kaydedilen dosyalar için, depolama aygıtını seçtikten sonra File.Exists yöntemiyle dosyanın varlığını kontrol edebilirsiniz. StorageContainer.Path özelliğini dosyanın göreli yolu ile birleştirin.
// ストレージコンテナを開きます
using (StorageContainer container = storageDevice.OpenContainer("XNASample"))
{
// 保存されたファイルのパス
string filePath = Path.Combine(container.Path, "SaveData.txt");
// ファイルがあるか確認する
this.isExistSaveDataFile = File.Exists(filePath);
}
Tüm Kodlar
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace ExistsFile
{
<summary>
ゲームメインクラス
</summary>
public class GameMain : Microsoft.Xna.Framework.Game
{
<summary>
グラフィックデバイス管理クラス
</summary>
private GraphicsDeviceManager graphics = null;
<summary>
スプライトのバッチ化クラス
</summary>
private SpriteBatch spriteBatch = null;
<summary>
スプライトでテキストを描画するためのフォント
</summary>
private SpriteFont font = null;
<summary>
保存したデータが存在するか
</summary>
private bool? isExistSaveDataFile = null;
<summary>
フォントファイルが存在するか
</summary>
private bool isExistFontFile = false;
<summary>
ダミーファイルが存在するか
</summary>
private bool isExistDummyFile = false;
<summary>
直線のキーボード入力の状態
</summary>
private KeyboardState oldKeyboardState = new KeyboardState();
<summary>
直線のゲームパッド入力の状態
</summary>
private GamePadState oldGamePadState = new GamePadState();
<summary>
GameMain コンストラクタ
</summary>
public GameMain()
{
// グラフィックデバイス管理クラスの作成
this.graphics = new GraphicsDeviceManager(this);
// ゲームコンテンツのルートディレクトリを設定
this.Content.RootDirectory = "Content";
// ゲームサービスコンポーネントを追加
this.Components.Add(new GamerServicesComponent(this));
}
<summary>
ゲームが始まる前の初期化処理を行うメソッド
グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
</summary>
protected override void Initialize()
{
// フォントファイルのパス
string fontFilePath =
Path.Combine(StorageContainer.TitleLocation, @"Content\Font.xnb");
// フォントファイルがあるか確認する
this.isExistFontFile = File.Exists(fontFilePath);
// ダミーファイルのパス
string dummyFilePath = Path.Combine(StorageContainer.TitleLocation, "AAA.txt");
// ダミーファイルがあるか確認する
this.isExistDummyFile = File.Exists(dummyFilePath);
// コンポーネントの初期化などを行います
base.Initialize();
}
<summary>
ゲームが始まるときに一回だけ呼ばれ
すべてのゲームコンテンツを読み込みます
</summary>
protected override void LoadContent()
{
// テクスチャーを描画するためのスプライトバッチクラスを作成します
this.spriteBatch = new SpriteBatch(this.GraphicsDevice);
// フォントをコンテンツパイプラインから読み込む
this.font = this.Content.Load<SpriteFont>("Font");
}
<summary>
ゲームが終了するときに一回だけ呼ばれ
すべてのゲームコンテンツをアンロードします
</summary>
protected override void UnloadContent()
{
// TODO: ContentManager で管理されていないコンテンツを
// ここでアンロードしてください
}
<summary>
描画以外のデータ更新等の処理を行うメソッド
主に入力処理、衝突判定などの物理計算、オーディオの再生など
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
protected override void Update(GameTime gameTime)
{
// キーボードの情報取得
KeyboardState keyboardState = Keyboard.GetState();
// ゲームパッドの情報取得
GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);
// Xbox360 コントローラの BACK ボタンを押したときにゲームを終了させます
if (gamePadState.Buttons.Back == ButtonState.Pressed)
{
this.Exit();
}
if ((keyboardState.IsKeyDown(Keys.A) && this.oldKeyboardState.IsKeyUp(Keys.A)) ||
(gamePadState.Buttons.A == ButtonState.Pressed &&
this.oldGamePadState.Buttons.A == ButtonState.Released))
{
// A ボタンが押されたとき /////
// ストレージデバイス選択UIを表示するための設定を行います
Guide.BeginShowStorageDeviceSelector(this.GetStorageDevice, null);
}
// 入力情報を記憶
this.oldKeyboardState = keyboardState;
this.oldGamePadState = gamePadState;
// 登録された GameComponent を更新する
base.Update(gameTime);
}
<summary>
ストレージデバイスを取得するために呼ばれる
</summary>
<param name="result">非同期処理の結果</param>
private void GetStorageDevice(IAsyncResult result)
{
// 結果をもとにストレージデバイスの選択UIを終了してストレージデバイスを取得します
StorageDevice storageDevice = Guide.EndShowStorageDeviceSelector(result);
if (storageDevice != null && storageDevice.IsConnected)
{
// ストレージデバイスの取得に成功し、接続されている場合 /////
// ストレージコンテナを開きます
using (StorageContainer container = storageDevice.OpenContainer("XNASample"))
{
// 保存されたファイルのパス
string filePath = Path.Combine(container.Path, "SaveData.txt");
// ファイルがあるか確認する
this.isExistSaveDataFile = File.Exists(filePath);
}
}
}
<summary>
描画処理を行うメソッド
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
protected override void Draw(GameTime gameTime)
{
// 画面を指定した色でクリアします
this.GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
this.spriteBatch.Begin();
// テキスト描画
this.spriteBatch.DrawString(this.font,
"A : Select Storage Device.",
new Vector2(50.0f, 50.0f), Color.White);
// フォントファイルの存在確認
this.spriteBatch.DrawString(this.font,
"FontFile : " + this.isExistFontFile,
new Vector2(50.0f, 70.0f), Color.White);
// ダミーファイルの存在確認
this.spriteBatch.DrawString(this.font,
"DummyFile : " + this.isExistDummyFile,
new Vector2(50.0f, 90.0f), Color.White);
// 保存ファイルの存在確認
string saveDataText = "SavedDateFile : ";
if (this.isExistSaveDataFile != null)
{
saveDataText += this.isExistSaveDataFile;
}
else
{
saveDataText += "?";
}
this.spriteBatch.DrawString(this.font,
saveDataText,
new Vector2(50.0f, 110.0f), Color.White);
// スプライトの一括描画
this.spriteBatch.End();
// 登録された DrawableGameComponent を描画する
base.Draw(gameTime);
}
}
}