C# System.IO.DirectoryNotFoundException:找不到路径的一部分

jua*_*n99 2 c# windows-forms-designer visual-studio .net-4.8

        try
        {
             string directory = @"D:/user/user.txt";
             FileStream FS = new FileStream(directory, FileMode.Append);
             StreamWriter SW = new StreamWriter(FS);
             string register;
             register = $"{generateID()};{txtfirstName.Text};{txtLastName.Text};{txtUser.Text};{txtEmail.Text};{txtPersonalID.Text}";
             SW.WriteLine(register);
             SW.Close();
             FS.Close();
        }
        catch (Exception ex)
        {
             MessageBox.Show(ex.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

我在 C# Windows Forms .NET Framework 中运行此代码,并且不断收到相同的消息。我正在上大学,我对编程还很陌生,所以我不知道可能出了什么问题。你有什么想法?任何想法?

在此输入图像描述

Chr*_*n.K 6

你的问题有点令人困惑。首先,您不应该命名变量directory,因为最终它是一个文件名并如此使用。

(我将忽略图像“D:\user\user.txt”和代码“D.:\user\user.txt”之间的差异,并假设您实际上使用了第一个)。

最有可能的是,该D:\User目录不存在,并且该类FileStream不会为您创建它。它将简单地假设指定文件名之前的所有(子)目录都存在,否则会失败。

因此,请确保该目录存在,无论是在应用程序外部,还是像这样:

string fileName = @"D:\user\user.txt";
string directory = Path.GetDirectoryName(fileName);
if (!Directory.Exists(directory))
{
   Directory.CreateDirectory(directory);
}
FileStream FS = new FileStream(fileName, FileMode.Append);

// ... rest of code
Run Code Online (Sandbox Code Playgroud)

  • 我认为你甚至可以跳过 `Directory.Exists()` 调用。根据 Microsoft 文档,“Directory.CreateDirectory()”方法无论如何都会执行此检查。https://learn.microsoft.com/en-us/dotnet/api/system.io.directory.createdirectory?view=net-6.0 > 在指定路径中创建所有目录和子目录,除非它们已存在。 (3认同)