gpt4 book ai didi

c# - 为什么我在使用 FileMode.OpenOrCreate 时收到 FileNotFoundException?

转载 作者:行者123 更新时间:2023-12-02 15:50:38 26 4
gpt4 key购买 nike

我正在开发一个简单的 ASP.NET WebApi 应用程序。在 Controller 中,我有一个 POST 操作,它执行以下代码:

using (var isoStore = IsolatedStorageFile.GetUserStoreForAssembly())
{
using (var textWriter = new StreamWriter(
isoStore.OpenFile(filename, FileMode.OpenOrCreate | FileMode.Truncate)))
{
// write to file
}
}

当文件不存在时,它会在 using 行抛出 FileNotFoundException 异常(当文件存在时,它可以正常工作)。

当我重写如下时:

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 的目的不是要在一次调用中涵盖第二个代码段中的两种情况吗?

最佳答案

FileMode enum 不是标志类型枚举,这意味着您不应对其执行按位运算。 FileMode.OpenOrCreate | FileMode.Truncate解析为 FileMode.Truncate它期望那里有一个文件。

一般OpenOrCreateTruncate是两种不同的打开文件模式,因此您需要选择一种模式( Create 是满足您需求的合理替代方案,归功于@Damien_The_Un believer)。

关于c# - 为什么我在使用 FileMode.OpenOrCreate 时收到 FileNotFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46038441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com