这是代码:
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问题。
答案 0 :(得分:2)
您正在使用
打开文件File.CreateText(file);
File.CreateText(String) Method
返回 StreamWriter 写入指定文件的StreamWriter 使用UTF-8编码。
然后,您不关闭它。然后,您尝试通过再次打开打开的文件来访问打开的文件
using (var writer = new StreamWriter(file))
但是,您遇到的异常又是另一个问题。使用StreamWriter
DirectoryNotFoundException (指定路径无效),例如, 它在未映射的驱动器上。
除上述以外,我建议您做的是
string file = Path.Combine(Environment.CurrentDirectory, "test.txt");
Console.WriteLine(file);
//FileMode.Create will create or overwwrite the file
using (var fs = new FileStream(file,FileMode.Create))
using (var writer = new StreamWriter(fs))
{
}
然后,如果仍然有问题,请转到该目录并检查文件是否存在,检查目录和文件的权限,并确保您具有适当的访问权限。
简而言之,您的代码值得怀疑,您需要对其进行修复,其次,您需要确定打开的文件是什么,其次,您需要检查该文件和/或目录的权限