【问题标题】:how to create and read a text file,that is editable after setup by user?如何创建和读取用户设置后可编辑的文本文件?
【发布时间】:2019-12-07 14:12:04
【问题描述】:

我使用 fileStream 创建了一个文本文件,我制作了 setup.exe 并运行它。然后当我想通过手动打开文件并保存来更改其内容时,它被拒绝了。错误显示:“您没有打开此文件的权限。请参阅文件的所有者或管理员以获得权限”。 我在视觉工作室的代码是:

FileStream myTfile = new FileStream(Application.StartupPath + @"\data\TextFile\Temperature.txt",
FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
lines = File.ReadAllLines(Application.StartupPath + @"\data\TextFile\Temperature.txt");

【问题讨论】:

  • 那么,您可以访问该文件夹吗?文件有什么属性?你曾经关闭过文件吗?
  • 是的,我有。我所有的代码都在这里,在这些之后,我关闭名为 myTfile 的文件。

标签: c# installation file-access


【解决方案1】:

首先,正如 Slava 所建议的,在 using() 中使用 FileStream 是一个非常好的主意,以确保 FileStream 正确关闭:

using(FileStream myTfile = new FileStream(path)){
     // make your read write operations here
}

但是,您的问题并非如此。问题是您尝试修改它的文件位于需要更多权限才能访问的路径中,并且受到限制。系统驱动器(通常是 C:)中的许多文件夹都是这样的,其中包括特定用户的 Documents、Desktop、... 文件夹等等的路径。

解决办法是:

选项 1. 您可以选择不受限制且不需要特殊权限的路径,例如:

C:\Users\Public   // assuming drive C is the system drive

选项 2。 让您的应用程序以管理员身份运行:

  • 为此,请在解决方案资源管理器中右键单击并选择添加 > 新项目
  • 选择“应用程序清单文件” -打开刚刚添加的项目,更改<requestedExecutionLevel>

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

【讨论】:

  • 非常感谢。现在使用选项 1,我应该手动创建路径,文本文件由我的应用程序创建并且是可编辑的。
  • 但是关于选项2,当我右键单击解决方案并选择添加新项目时,没有“应用程序清单文件”可供选择
【解决方案2】:

在这里创建或打开一个文件:

FileStream myTfile = new FileStream(Application.StartupPath + 
@"\data\TextFile\Temperature.txt",
FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);

系统将在您完成之前保持打开状态。完成后,您需要告诉系统释放与文件关联的资源。为此,请使用 using 语句:

using(FileStream myTfile = new FileStream(path)){
     // your code here
}

或者在你完成后手动关闭它:

myTfile.Close();

【讨论】:

  • 我手动关闭了它。我的问题是别的。请再次阅读我的问题
  • 您可以尝试检查 TextFile 文件夹或父文件夹的权限。尝试手动删除并重新创建它们,看看问题是否仍然存在
猜你喜欢
  • 2020-04-08
  • 2018-04-07
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多