C#WPF-尝试在应用程序启动时创建文件时出错

本文关键字:创建 文件 出错 启动 应用程序 C#WPF- | 更新日期: 2023-09-27 18:28:52

我是Visual Studio的新手,我正在尝试制作一个创建.ahk文件的应用程序。我的问题是,当应用程序启动时,我需要它来创建几个文件/文件夹。为了做到这一点,我添加了这个代码

public MainWindow()
{
    InitializeComponent();
    int i = 1;
    while (i < 6)
    {
        string comp_name = System.Environment.UserName;
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'" + i + @"'Modifier.txt");
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'" + i + @"'Key.txt");
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'" + i + @"'Me_Do.txt");
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'" + i + @"'Text.txt");
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'" + i + @"'Bind" + i + @".txt");
        System.IO.File.Create(@"C:'Users'" + comp_name + @"'Documents'KeyBind'Bind.ahk");
        i++;
    }
}

这会导致以下错误

> An unhandled exception of type
> 'System.Windows.Markup.XamlParseException' occurred in
> PresentationFramework.dll
> 
> Additional information: 'The invocation of the constructor on type
> 'WpfApplication2.MainWindow' that matches the specified binding
> constraints threw an exception.' Line number '3' and line position
> '9'.

不确定这里的问题是什么。如果你想查看完整的代码,我这里有完整代码链接我知道有很多多余的代码,一旦我弄清楚了,我计划修复它。感谢您的帮助。

C#WPF-尝试在应用程序启动时创建文件时出错

尽量不要使用硬编码的Documents路径,也不要尝试创建已经存在的目录。您也可能不想创建这些文件,除非它们丢失了。

private void EnsureFiles()
{
    var numberedFiles = new[] { "Modifier.txt", "Key.txt", "Me_Do.txt", "Text.txt" };
    var basePath = Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
        "KeyBind");
    if (!Directory.Exists(basePath))
        Directory.CreateDirectory(basePath);
    var bindAhkPath = Path.Combine(basePath, "Bind.ahk");
    if (!File.Exists(bindAhkPath))
        File.CreateText(bindAhkPath).Dispose();
    for (var i = 1; i < 6; i++)
    {
        foreach (var file in numberedFiles)
        {
            var numberedPath = Path.Combine(basePath, i.ToString());
            if (!Directory.Exists(numberedPath))
                Directory.CreateDirectory(numberedPath);
            var filePath = Path.Combine(numberedPath, file);
            if (!File.Exists(filePath))
                File.CreateText(filePath).Dispose();
        }
    }
}

正如其他人所建议的,您可能希望将此方法从主窗口移到App类中,然后覆盖OnStartup来调用它。