为什么我不能在 LocalApplicationData 中创建文件? C#,VS 2022,Windows11
Why can't I create a file in LocalApplicationData? C# , VS 2022, Windows 11
我知道文件操作有限制,但是SpecialFolder.LocalApplicationData
应该是给应用程序使用的。
string _myFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyFile.txt"); //Line1
Console.WriteLine(_myFilePath); //Line2
Console.WriteLine(File.Exists(_myFilePath)); //Line3
Console.WriteLine(File.Create(_myFilePath)); //Line4
这是控制台输出:
程序在第 4 行停止,VS 2022 显示此错误:
如何在 SpecialFolder.LocalApplicationData
中创建或删除 files/folders?或者推荐哪个文件夹用于这种 file/folder 操作?
在没有管理员权限的情况下使用Windows11、VS 2022 17.2.0 Preview 5.0和NET 6.0:
你的代码对我来说工作得很好。
输出:
C:\Users\Edgar\AppData\Local\MyFile.txt
False
System.IO.FileStream
但这是我的建议:
检查目录的 ACL:您的帐户是否允许创建新文件?
(Right-click 目录 -> 属性 -> 安全 -> Select 你自己的用户并检查你的权限。)
通常您不应直接在 %localappdata%
目录下创建文件。
如果您需要 temp-file,我建议您使用 Path.GetTempFileName()
来获取唯一的文件名。
如果您想将文件存储更长的时间,那么我建议在 %localappdata%
中为您的应用程序创建一个目录并将文件保存在那里。
样本:
string myApplicationDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApplication");
string myApplicationFile = Path.Combine(myApplicationDirectory, "myFile.txt");
if (!Directory.Exists(myApplicationDirectory)) {
Console.WriteLine($"Creating directory: {myApplicationDirectory}");
Directory.CreateDirectory(myApplicationDirectory);
}
File.Create(myApplicationFile);
Console.WriteLine($"File created: {myApplicationFile}");
输出:
Creating directory: C:\Users\Edgar\AppData\Local\MyApplication
File created: C:\Users\Edgar\AppData\Local\MyApplication\myFile.txt
我知道文件操作有限制,但是SpecialFolder.LocalApplicationData
应该是给应用程序使用的。
string _myFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyFile.txt"); //Line1
Console.WriteLine(_myFilePath); //Line2
Console.WriteLine(File.Exists(_myFilePath)); //Line3
Console.WriteLine(File.Create(_myFilePath)); //Line4
这是控制台输出:
程序在第 4 行停止,VS 2022 显示此错误:
如何在 SpecialFolder.LocalApplicationData
中创建或删除 files/folders?或者推荐哪个文件夹用于这种 file/folder 操作?
在没有管理员权限的情况下使用Windows11、VS 2022 17.2.0 Preview 5.0和NET 6.0:
你的代码对我来说工作得很好。
输出:
C:\Users\Edgar\AppData\Local\MyFile.txt
False
System.IO.FileStream
但这是我的建议:
检查目录的 ACL:您的帐户是否允许创建新文件?
(Right-click 目录 -> 属性 -> 安全 -> Select 你自己的用户并检查你的权限。)
通常您不应直接在 %localappdata%
目录下创建文件。
如果您需要 temp-file,我建议您使用 Path.GetTempFileName()
来获取唯一的文件名。
如果您想将文件存储更长的时间,那么我建议在 %localappdata%
中为您的应用程序创建一个目录并将文件保存在那里。
样本:
string myApplicationDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApplication");
string myApplicationFile = Path.Combine(myApplicationDirectory, "myFile.txt");
if (!Directory.Exists(myApplicationDirectory)) {
Console.WriteLine($"Creating directory: {myApplicationDirectory}");
Directory.CreateDirectory(myApplicationDirectory);
}
File.Create(myApplicationFile);
Console.WriteLine($"File created: {myApplicationFile}");
输出:
Creating directory: C:\Users\Edgar\AppData\Local\MyApplication
File created: C:\Users\Edgar\AppData\Local\MyApplication\myFile.txt