4

テキストファイルに書き込むコードを書き込もうとしています。コードが機能していました...しかし、今日(変更なしで)「アクセスが拒否されました」というエラーが発生し始めました。LocalFolder (Windows.Storage.ApplicationData.Current.LocalFolder) に書き込んでいました。

ファイルを LocalStorage に保存することをマニフェストで宣言する必要がありますか? マイ ドキュメントを作成する必要があることはわかっていますが、何か不足していますか? ファイルに書き出そうとする方法を示すサンプル メソッドを次に示します。

        ''' <summary>
    ''' Writes all of the text to the specified file in one of the specified safe storage folders.
    ''' </summary>
    ''' <param name="text">The text to write.</param>
    ''' <param name="append">Whether or not to append the data or overwrite what is in the file.</param>
    ''' <param name="fileName">The name of the file to write the data to.</param>
    ''' <param name="safeFolder">The safe storage folder that should be written to.  These folders are isolated for the application to use
    ''' and do not require additional manifest permissions.</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Async Function WriteAllText(text As String, append As Boolean, fileName As String, safeFolder As SafeStorageFolder) As Task
        Dim folder As Windows.Storage.StorageFolder

        Select Case safeFolder
            Case SafeStorageFolder.Local
                folder = Windows.Storage.ApplicationData.Current.LocalFolder
            Case SafeStorageFolder.Roaming
                folder = Windows.Storage.ApplicationData.Current.RoamingFolder
            Case SafeStorageFolder.Temp
                folder = Windows.Storage.ApplicationData.Current.TemporaryFolder
            Case Else
                folder = Windows.Storage.ApplicationData.Current.LocalFolder
        End Select

        Dim sf As StorageFile

        If append = True Then
            sf = Await folder.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.OpenIfExists)
        Else
            sf = Await folder.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.ReplaceExisting)
        End If

        ' WriteTextAsync will always overwrite the file even if the existing file has been opened.  We'll use
        ' AppendTextAsync here, the above CreateFileAsync will handle whether the file has been truncated or not.
        Await FileIO.AppendTextAsync(sf, text)

    End Function
4

1 に答える 1

2

私はあなたがテストプロジェクトで持っているのと同じコードロジックを使用しました、そしてそれは私にとってうまく働きます。追加/追加しないパスのすべてを通過したわけではありませんが、各フォルダーに書き込むことができました。

選択で設定したフォルダーオブジェクトからファイルパスを取得し、ファイルエクスプローラーで開くことができることを再確認しましたか?

于 2012-08-30T18:17:02.183 に答える