C#中如何获取程序的当前文件夹名称并将zip文件解压到当前文件夹? [复制]

Posted

技术标签:

【中文标题】C#中如何获取程序的当前文件夹名称并将zip文件解压到当前文件夹? [复制]【英文标题】:How to get the program's current folder name and extract the zip file to the current folder in C#? [duplicate] 【发布时间】:2020-11-21 23:29:20 【问题描述】:

我有一个 Winforms 自动更新程序。

如果我打开程序,它将从原始文本中获取文件下载链接,其中包含从网络到程序的 .zip 文件下载链接。

但是如果这个人创建了一个文件夹并将程序放在文件夹中,我希望程序获取程序所在的文件夹名称并将 zip 文件解压缩到其中。

这是我的代码:

private void StartDownload()
        
            WebClient webClient = new WebClient();
            string path = "./Sympathy";
            string address1 = "https://ghostbin.co/paste/cjx7j/raw";
            string address2 = webClient.DownloadString(address1);
            this.progressBar1.Value = 100;
            string str = "./Sympathy.zip";
            if (System.IO.File.Exists(str))
            
                System.IO.File.Delete(str);
            
            else
            
                webClient.DownloadFile(address2, str);
                ZipFile.ExtractToDirectory(str, Directory.GetCurrentDirectory(Directory).Name); 
                System.IO.File.Delete(str);
            
        

但我在(Directory) 部分遇到错误,我该如何解决?

【问题讨论】:

这能回答你的问题吗? Get current folder path 那没有回答我的问题。 然后解释一下你想做什么 【参考方案1】:

获取可执行文件的路径使用System.Reflection.Assembly.GetEntryAssembly().Location;,获取目录使用Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

我发现您的代码有缺陷。改用它来做所有事情:

string archivePath = "Sympathy.zip";
using (var client = new WebClient())

    client.DownloadFile(client.DownloadString("https://ghostbin.co/paste/cjx7j/raw"), archivePath);
    ZipFile.ExtractToDirectory(archivePath, Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location));
    File.Delete(archivePath);

它有效。它会下载一堆未知文件。

【讨论】:

【参考方案2】:

您收到的错误是什么?这将有助于解决您遇到的问题。

您提到您在代码的(Directory) 部分遇到错误,我在这一行看到了一些内容:

    Directory.GetCurrentDirectory 方法不需要输入; 您不能将类型作为参数传递; 调用Directory.GetCurrentDirectory()返回一个字符串,你不能在这个上调用属性Name

请注意,此调用的结果并不总是您的应用程序所在的位置。如果您检查超链接的属性,您可以设置Target' 和Start inTarget 是您的程序,Start in 是提供给您的应用程序的当前目录。除了创建超链接,您还可以打开命令提示符(默认为您的主目录)并键入应用程序的完整路径,这将导致您的应用程序打开并接收命令提示符指向的路径作为当前目录(在默认情况下,您的主目录)。帖子Get current folder path 中的答案对此进行了更深入的介绍。

【讨论】:

错误是:CS0119 'Directory' 是一种类型,在给定的上下文中无效 ***.com/q/15653921/3107892 不是我想要的。 这是我回答的第 2 点,您输入了 Directory 并将其用作输入。问题是您不能使用类作为输入,只能使用类/类型的实例。删除此文本将解决您遇到的问题(下一个问题将是未知的.Name,也将其删除)【参考方案3】:

通过这一行,您可以获得应用程序的当前目录。

Application.StartupPath;

它为您提供 .exe 运行应用程序的文件夹。

【讨论】:

以上是关于C#中如何获取程序的当前文件夹名称并将zip文件解压到当前文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中获取当前可执行文件的名称?

如何解压缩 zip 文件并将文件复制到不同的不同文件夹中?

PHP解压缩zip并将内容插入数据库

对于“_”标志性的 zip c#,zip 提取全部失败

解压缩并将内容推送到表格视图中

C# 客户端rar/zip文件解压缩