10

Windows ストア アプリのファイルに文字列テキストを追加する方法を探しています。ファイルを読み取ってから新しいファイルを作成して上書きしようとしましたが、Windows ストア アプリ C# は C のように機能せず、同じ名前の新しいファイルを作成すると古いファイルが上書きされます。現在、私のコードは古いファイルを開き、その内容を読み取って削除し、読み取った内容と追加したい内容を含む新しいファイルを作成しています。もっと良い方法があることは知っていますが、それを見つけることができないようです。では、Windows ストア アプリ (Windows RT) の既存のファイルにテキストを追加するにはどうすればよいですか?

編集 -

私はこれを試しました

var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var file = await folder.GetFileAsync("feedlist.txt");
await Windows.Storage.FileIO.AppendTextAsync(file, s);

しかしSystem.UnauthorizedAccessException 、MSDNによると、これはファイルが読み取り専用の場合に発生し(右クリックのプロパティで確認しましたが、そうではありません)、ファイルにアクセスするために必要な権限がない場合はどうすればよいですか?

4

2 に答える 2

20

FileIOクラスを使用して、ファイルに追加できます。例えば ​​...

// Create a file in local storage
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync("temp.txt", CreationCollisionOption.FailIfExists);

// Write some content to the file
await FileIO.WriteTextAsync(file, "some contents");

// Append additional content
await FileIO.AppendTextAsync(file, "some more text");

その他の例については、ファイル アクセスのサンプルをご覧ください。

于 2013-02-05T23:01:27.350 に答える
1

FileIO.AppendTextAsync の使用は適切なオプションです。このコード スニペットを見つけてください。

  • 存在しない場合は、最初にフォルダーを作成します。そうしないと作成されません。

  • 次に、存在しない場合はファイルを作成します。

  • 最後に、ファイルにテキストを追加します。

    public static async void  WriteTrace(TraceEventType eventType, string msg, [CallerMemberName] string methodName = "")
    {
         const string TEXT_FILE_NAME = "Trace.txt";
        string logMessage = eventType.ToString() + "\t" + methodName + "\t" + msg ;
        IEnumerable<string> lines = new List<string>() { logMessage }; 
        StorageFolder localFolder = ApplicationData.Current.LocalFolder;
        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;
    
        //if(localFolder.CreateFolderQuery(Windows.Storage.Search.CommonFolderQuery.)
        StorageFolder LogFolder = await localFolder.CreateFolderAsync("LogFiles", CreationCollisionOption.OpenIfExists);
    
        await LogFolder.CreateFileAsync(TEXT_FILE_NAME, CreationCollisionOption.OpenIfExists);
    
        StorageFile logFile = await LogFolder.GetFileAsync(TEXT_FILE_NAME);
    
        await FileIO.AppendLinesAsync(logFile, lines);
    
    }
    
于 2016-04-27T13:48:27.357 に答える