私は、簡単なASP.NET WebApiアプリケーションを開発しています。ファイルが存在しないときusing
ライン上FileNotFoundException
例外をスローFileMode.OpenOrCreateを使用すると、なぜFileNotFoundExceptionが発生しますか?
using (var isoStore = IsolatedStorageFile.GetUserStoreForAssembly())
{
using (var textWriter = new StreamWriter(
isoStore.OpenFile(filename, FileMode.OpenOrCreate | FileMode.Truncate)))
{
// write to file
}
}
(ファイルが存在する場合、それは正常に動作します):コントローラで、私は次のコードを実行し、POSTアクションを持っています。
using (var isoStore = IsolatedStorageFile.GetUserStoreForAssembly())
{
StreamWriter textWriter;
if (!isoStore.FileExists(filename))
{
textWriter = new StreamWriter(isoStore.CreateFile(filename));
}
else
{
textWriter = new StreamWriter(
isoStore.OpenFile(filename, FileMode.Open | FileMode.Truncate));
}
}
すべてが正常に動作し、私は関係なく、それが存在していたかどうか、ファイルに書き込むことができます。次のように私はそれを書き換える
OpenOrCreate
は、1回のコールで2番目のスニペットの両方のケースをカバーする目的ではありませんか。
isoStore.OpenFile()の実装を表示できますか? –
@PawelMagaこれは 'System.IO.IsolatedStorage'名前空間の標準クラスのメソッドです。私はこれを明確にするために欠けているコードを追加しました。 – BartoszKP
なぜビットマスクではないFileMode Enumでビット単位のORを使用していますか? FileMode.OpenOrCreate(4 = 100)| FileMode.Truncate(5 = 101)= 5(101)は、基本的に単なる切り詰めであり、既存のファイルが必要です。 – Shiffty