C#目录创建,文件创建

C#目录创建,文件创建,c#,directory,C#,Directory,我正在使用以下代码: private void Maker_Load(object sender, EventArgs e) { string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string specificFolder = Path.Combine(folder, "ListMaker"); string speci

我正在使用以下代码:

private void Maker_Load(object sender, EventArgs e)
    {
        string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        string specificFolder = Path.Combine(folder, "ListMaker");
        string specificFile = Path.Combine(specificFolder, "info.mrfl");
        string specificFile2 = Path.Combine(specificFolder, "check.mrfl");

        if (!Directory.Exists(specificFolder))
        {
            Directory.CreateDirectory(specificFolder);
        }

        else if (!File.Exists(specificFile))
        {
            File.Create(specificFile);
        }

        else if (!File.Exists(specificFile2))
        {
            File.Create(specificFile2);
        }

        else
        {
            FileStream fs = new FileStream(specificFolder + "\\check.mrfl", FileMode.Open);

            Byte readSingleByte = (Byte)fs.ReadByte();
            int a = readSingleByte;
            fs.Close();

            if (a == 01)
            {
                checkBox1.CheckState = CheckState.Checked;

                FileStream fs2 = new FileStream(specificFolder + "\\Info.mrfl", FileMode.Open);

                Byte[] ename = new Byte[20];
                Byte[] phone = new Byte[40];
                Byte[] email = new Byte[60];

                fs2.Seek(0, SeekOrigin.Begin);

                fs2.Read(ename, 0, ename.Length);
                fs2.Read(phone, 0, phone.Length);
                fs2.Read(email, 0, email.Length);

                text_ename.Text = Encoding.Unicode.GetString(ename);
                text_phone.Text = Encoding.Unicode.GetString(phone);
                text_email.Text = Encoding.Unicode.GetString(email);

                fs2.Close();
            }

            else
            {
                checkBox1.CheckState = CheckState.Unchecked;
                text_ename.Text = "";
                text_phone.Text = "";
                text_email.Text = "";
            }
        }
结果:

仅创建了“ListMaker”文件夹

为了了解更多信息,我编辑了我的帖子。 我想保存一个目录。里面有两个文件。 选中复选框后,每个文件都会保存特定的二进制值


谢谢你的帮助。很抱歉,我不会说英语。

你的
else if
会导致你的代码只运行第一个
if
,然后停止运行

你需要像这样的东西:

if (!Directory.Exists(specificFolder)) {
   Directory.CreateDirectory(specificFolder);
}
if (!File.Exists(specificFile)) {
   File.Create(specificFile); 
}
if (!File.Exists(specificFile2)) {
   File.Create(specificFile2);
}
然后,您需要在执行任何其他需要执行的操作之前确认文件已创建

if(File.Exists(specificFile)) {
    //do things
} 
等等

顺便说一句,如果您创建并试图编辑这些文件(我相信C#会保持您创建的文件处于打开状态),您可能会遇到IOExceptions


我建议您创建文件,如
File.Create(specificFile).Close()

丢失两条
else if
语句中的
else
。你希望这三件事各自独立地发生。你需要准确地告诉我们程序应该做什么,而不是你的观察结果是什么。否则我们只是假设你在编辑我的帖子时希望这三件事都发生。添加更多信息。谢谢。谢谢你的工作!File.Create(specificFile.Close()<-是一个很好的提示