Windows8ストアアプリ ファイルを取得する

VB Tips And Sample(HOME)VBのWindowsストアアプリ入門

ファイルを取得する

ファイルアクセスですが、ユーザが、フェイル選択する場合はユーザの権限で開ける任意な場所のフアィルにアクセスできるようですが、
プログラム起動時に自動的に適当なフォルダにアクセスすることはできません。
アクセスできるフォルダは決められているようです。
ここに書かれていますが、
  • ダウンロードフォルダ
  • アプリケーションインストールフォルダ
  • アプリケーションデータフォルダ
の三つしかない。
で、ストアアプリのデータ保存場所にあるXMLファイルを取得するサンプル。

'ファイルの一覧を取得
    Public Async Function LoadXmlFiles() As Task(Of String())
        Try
            'http://msdn.microsoft.com/ja-jp/library/windows/apps/hh994634.aspx 参考になるサイトをあげておきます。
            'http://www.eonet.ne.jp/~maeda/cs/cs.php#Windows8 
            Dim storageFolder As Windows.Storage.StorageFolder = Windows.Storage.ApplicationData.Current.LocalFolder
            'Dim storageFolder As Windows.Storage.StorageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation
            Dim files As IReadOnlyList(Of StorageFile) = Await storageFolder.GetFilesAsync

            Dim fileName As String() = {""}

            Dim x As Integer = 0

            For i As Integer = 0 To files.Count - 1
                ' do something with the name of each file
                If files(i).Name.IndexOf(".xml") > 0 And files(i).Name.IndexOf("_sessionState.xml") = -1 Then

                    ReDim Preserve fileName(x)
                    fileName(x) = files(i).Name
                    x = x + 1
                End If

            Next i

            If fileName(0) = "" Then
                ReDim fileName(0)
                fileName(0) = "Hello.xml"
            End If

            Return fileName

        Catch ex As Exception
            Debug.WriteLine(ex.Message())
            Return Nothing
        End Try

    End Function


Asyncは、非同期のメッソッドを意味する。
管理人はJavaScriptのAjaxを直ぐ思い出しました。
簡単に考えれば、このFunctionの処理が重たくても、PCをフリーズさせたり、他の処理を止めないようにするためのものだと思います。
Awaitのメソッドを使用したら、Asyncを付けなさいと自動でVSに言われます。

サンプルは、ローカルフォルダのファイルを取得し、拡張子がxmlのものを、配列に取得して返すと言うシンプルなもの。
ま、これだけですが、結構最初は戸惑います。
「Windows.Storage.ApplicationData.Current.LocalFolder」は、実際どこになるかと言えば、
ソリューションエクスプローラの
「Package.appxmanifest」の、「パッケージ化」-「パッケージファミリー名」で指定したフォルダ内の「LocalState」フォルダ。
管理人のWindows8の具体的な場所は、「C:\Users\ユーザ名\AppData\Local\Packages\BloodPressure3_kwmcxzszfer2y\LocalState」になる。
ファイルの場所
うーん、説明がないとファイルの場所すら分かりません!

VB Tips And Sample(HOME)VBのWindowsストアアプリ入門