2

プロジェクト内の既存のファイル (プロジェクトのローカル ファイル) にデータを書き込もうとしています。次のコードを使用しました

        Uri path = new Uri(@"Notes.txt", UriKind.Relative);

        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {

            using (StreamWriter writefile = new StreamWriter(new IsolatedStorageFileStream(path.ToString(), FileMode.Append, FileAccess.Write,myIsolatedStorage)))
            {
                writefile.WriteLine("hi");
                writefile.Flush();
                writefile.Dispose();
            }
        }

プログラムの実行中に例外/エラーはありませんが、ファイルは空白で、データは含まれていません。

ファイルのビルド アクションを「リソース」として設定し、コンテンツを「新しい場合はコピー」として設定しました。確認するために、ファイルを削除してテストしましたが、追加モードで開こうとしても例外は発生しません。

編集:確認するために開発環境でファイルを開いていました。ただし、後で ISETool.exe を使用してファイルを確認しました。しかし、ファイルはまったく作成されません!! 私が使用した更新されたコードは次のとおりです。

 Uri path = new Uri(@"Notes.txt", UriKind.Relative);
 using (var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
 using (var stream = new IsolatedStorageFileStream(path.ToString(), FileMode.OpenOrCreate, FileAccess.Write, myIsolatedStorage))
 using (var writefile = new StreamWriter(stream))
        {
            writefile.WriteLine("hi");
        }
4

1 に答える 1

6

編集

上記のコメントに基づいて、実際の問題は、分離ストレージの仕組みを誤解していることだと思います。ファイルは携帯電話またはエミュレータ イメージ内に保存されますが、どちらも開発マシンのネイティブ ファイル システムではありません。

開発マシンからファイルにアクセスする必要がある場合は、Windows Phone Power Tools (c/o Alastair Pitts、上記) などのユーティリティが必要です。コマンド ライン インターフェイスが気にならない場合は、SDK の isetool.exeが必要です。

元の投稿

私に飛びつく2つのこと:

  1. あなたはあなたのを処分していませんIsolatedStorageFileStream
  2. IsolatedStorageFileStreamから のインスタンスを取得する必要があります。IsolatedStorageFile
  3. Disposeあなたは電話する必要はありませんwritefile(それは何usingですか)

これを試して:

using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = isolatedStorage.OpenFile(path.ToString(), FileMode.Append, FileAccess.Write))
using (var writefile = new StreamWriter(stream))
{
    writefile.WriteLine("hi");
}
于 2013-04-11T03:33:59.923 に答える