C# 如何访问appdata中的文件夹并将其删除?

C# 如何访问appdata中的文件夹并将其删除?,c#,C#,我正在尝试为FiveM服务器创建一个启动器,目前我在“删除缓存”按钮上,原则是当你按下它时,它会删除文件夹:“browser,db,dunno,priv,servers,subprocess”,它们位于:\AppData\Local\FiveM\FiveM.app\cache'但我不知道如何访问它们删除,这是我尝试过但不起作用的代码,他们不会删除自己(我是C#的新手) 代码如下: private void button3_Click(object sender, EventArg

我正在尝试为FiveM服务器创建一个启动器,目前我在“删除缓存”按钮上,原则是当你按下它时,它会删除文件夹:“browser,db,dunno,priv,servers,subprocess”,它们位于:\AppData\Local\FiveM\FiveM.app\cache'但我不知道如何访问它们删除,这是我尝试过但不起作用的代码,他们不会删除自己(我是C#的新手)

代码如下:

        private void button3_Click(object sender, EventArgs e)
        {
            string folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string path = System.IO.Path.Combine(folder, "fivem");
            string fap = System.IO.Path.Combine(path, "FiveM Application Data");
            string cache = System.IO.Path.Combine(fap, "cache");
            string browser = System.IO.Path.Combine(cache, "browser");
            string db = System.IO.Path.Combine(browser, "db");
            string dunno = System.IO.Path.Combine(db, "dunno");
            string priv = System.IO.Path.Combine(dunno, "priv");
            string servers = System.IO.Path.Combine(priv, "servers");
            string Cache = System.IO.Path.Combine(servers, "subprocess");



            if (Directory.Exists(Cache))
            {
                Directory.Delete(Cache);
            }
        }
尝试:


我不确定
Path.Combine
是否以那种方式工作。我会这样修改您的方法(更易于阅读和维护):

如果要删除基本文件夹中的所有文件夹,而不按名称选择它们,可以尝试以下操作:

    private void button3_Click(object sender, EventArgs e)
    {
        string baseFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"fivem", "FiveM.app");

        foreach (var subDir in new DirectoryInfo(baseFolder).GetDirectories()) {
            subDir.Delete(true);
        }
    }
不要忘记使用
Delete
重载和
true
参数,以便可以启动递归删除以删除所有文件 和子文件夹


您所做的似乎是正确的(实际上并没有确保每个文件夹都位于正确的路径),但您只是在删除缓存文件夹(应该是
Cache
subprocessFolder
或其他内容)是您从浏览器中组合db的打字错误吗?等等?@user1781290否,我试图同时合并所有删除的文件,我按顺序命名了它们为什么你认为它“不起作用”?你有错误吗?你需要告诉我们。请注意,您在问题中给出的路径不是
缓存中的路径
;在调试器中查看它。另外,这不是删除文件夹中包含文件的方法。@Bakaguya-看起来你误解了
Path.Combine
的作用。您试图删除
\AppData\Local\fivem\fivem Application Data\cache\browser\db\dunno\priv\servers\subprocess
中的单个目录,这显然不是您想要的。您可能想要
目录。删除(“,true”)如果没有一个目录是非空的,它就不会爆炸。HMM,它已经删除了FiveM.appglad中的所有文件夹来帮助,如果一切都在为你工作,请考虑将这个答案标记为“接受”:
    private void button3_Click(object sender, EventArgs e)
    {
        string baseFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"fivem", "FiveM.app");

        var folders = new string[]
        {
            "FiveM Application Data",
            "cache",
            "browser",
            "db",
            "dunno",
            "priv",
            "servers",
            "subprocess"
        };

        foreach (var folder in folders)
        {
            var toDelete = System.IO.Path.Combine(baseFolder, folder);

            if (Directory.Exists(toDelete))
            {
                Directory.Delete(toDelete, true);
            }
        }
    }
    private void button3_Click(object sender, EventArgs e)
    {
        string baseFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"fivem", "FiveM.app");

        foreach (var subDir in new DirectoryInfo(baseFolder).GetDirectories()) {
            subDir.Delete(true);
        }
    }