간단한 ASP.NET WebApi 응용 프로그램을 개발 중입니다.FileMode.OpenOrCreate를 사용할 때 왜 FileNotFoundException이 발생합니까?
파일이 존재하지 않는using
줄에
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
은 한 번에 두 번째 발췌 문장의 두 경우를 모두 다루지 않습니까?
isoStore.OpenFile()의 구현을 보여줄 수 있습니까? –
@PawelMaga 이것은 'System.IO.IsolatedStorage' 네임 스페이스의 표준 클래스의 한 메소드입니다. 이를 명확히하기 위해 누락 된 코드 조각을 추가했습니다. – BartoszKP
비트 마스크가 아닌 FileMode Enum에서 비트 OR을 사용하는 이유는 무엇입니까? FileMode.OpenOrCreate (4 = 100) | FileMode.Truncate (5 = 101) = 5 (101) 기본적으로 그냥 잘라내 기 때문에 기존 파일이 필요합니다. – Shiffty