【问题标题】:C# Winforms cannot create file "the media is write protected"C# Winforms 无法创建文件“媒体被写保护”
【发布时间】:2019-06-25 17:46:50
【问题描述】:

我有简单的代码

using (FileStream fs = File.Create(@"newfile.txt"))
{

}

如果我给出路径“E:\newfile.txt”,则会收到错误 System.IO.IOException: 'The media is write protected.'

如果我给出路径“C:\newfile.txt”我不会收到错误但不会创建文件,即使我给出路径“C:\Users\Me\Documents\newfile.txt”我也不会收到错误并且不创建文件。

这些错误是否相关,我之前写入USB设备没有问题,我的C盘不应该被限制,当然Users文件夹根本没有限制。

我错过了什么?

【问题讨论】:

  • C 盘默认受限于Windows 10。您在哪个版本的Windows 上运行此代码?无论是哪个版本,My Documents 都应该没问题,除非它像大多数企业一样因为漫游配置文件而被重定向到网络文件夹。 USB驱动器的错误可能被锁定或密码保护(与具有保护的外部硬盘驱动器相同)。您实际上是在将任何数据写入文件还是正是如何编写代码示例?
  • 那么,如果你创建的文件完全一样:using (FileStream fs = File.Create(@"newfile.txt")),你能在项目的\bin\Debug\bin\Release 文件夹中找到该文件吗?您提到的另一条路径是受限制的\不可写\错误的。
  • @Franck Windows 10,就像代码示例一样, using 语句抛出异常。 Documents 不是网络文件夹。我可以在 Windows 资源管理器中的所有位置创建文件。
  • @Jimi 文件未在 bin 文件夹中创建且没有错误。
  • 您的意思是在DebugRelease 文件夹中。如果未创建文件,则问题不在这里。也许该代码从未被调用过,其他地方出现错误等。将其放入 Button 的 Click 处理程序中 - 只是该代码 - 然后再试一次。

标签: c# winforms file io save


【解决方案1】:

也许这可行:

string path = @"C:\Users\Me\Documents\newfile.txt"
File.AppendAllText(path,new[] {"Your text goes here"});

如果文件不存在或写入现有文件,这将创建文件。

另见: Create a .txt file if doesn't exist, and if it does append a new line

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 2016-11-08
    • 2018-02-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多