【发布时间】:2019-05-02 03:08:21
【问题描述】:
这是代码:
string file = Path.Combine(Environment.CurrentDirectory, "test.txt");
if (!File.Exists(file)) {
File.CreateText(file); // will throw always
}
using (var writer = new StreamWriter(file)) { // will throw always
//...
}
如果文件不存在并且尝试创建它,则会抛出DirectoryNotFoundException,如果文件确实存在,则在尝试使用 StreamWriter 时将抛出DirectoryNotFoundException。我不相信这段代码是错误的,所以我不知道问题出在哪里。
更新
文件的值为/tmp/test.txt。是的,它总是抛出,异常是
System.IO.DirectoryNotFoundException
: Could not find a part of the path '/tmp/test.txt'
更新
重新启动已解决此问题。我不知道为什么会出现这种情况,但它可能只是一个 IDE 问题。
【问题讨论】:
-
您是否有足够的权限从代码访问文件夹/目录?
-
Environment.CurrentDirectory应该立即访问代码的文件夹,直接在解决方案所在的位置,所以我相信它有那么多权限。文件夹设置为所有者,我是所有者,我有读写权限。 -
Environment.CurrentDirectory should be immediately accessing the code's folder这不确定,也不确定您是否有权访问那里的文件。最好使用用户数据文件夹或临时目录 -
我已将我的用户的文件夹权限授予完全权限,所以这似乎很奇怪。尽管如此,我会对此进行测试。
-
又失败了。这次我用了
Path.Combine(Path.GetTempPath(), "test.txt");,还是失败了。这绝对应该针对临时路径。我开始怀疑 Rider 的权限可能存在潜在问题。我很犹豫要不要在骑手上尝试sudo,但我肯定会sudodotnet 命令并尝试以这种方式运行它。