解压文件而不创建文件夹

Posted

技术标签:

【中文标题】解压文件而不创建文件夹【英文标题】:Unzip a file without creating a folder 【发布时间】:2015-09-02 15:55:23 【问题描述】:

我正在尝试解压缩 .zip 文件。这一切正常,但它总是会创建一个带有 .zip 文件名称的文件夹。

如何在不创建新文件夹的情况下获取文件?

Imports System.IO.Compression

Private Sub XYform_Load(sender As Object, e As EventArgs) Handles Me.Load 
    Try
        If (Not System.IO.Directory.Exists(System.IO.Path.GetTempPath & "\XML")) Then
            System.IO.Directory.CreateDirectory(System.IO.Path.GetTempPath & "\XML")
        End If
    Catch
    End Try

    Try
        ZipFile.ExtractToDirectory("D:\Test\Test data.zip", System.IO.Path.GetTempPath & "\XML")
    Catch
        'Allready Exists
    End Try
End Sub

如果我这样做,它总是会在“XML”文件夹中创建一个“测试数据”文件夹。

【问题讨论】:

【参考方案1】:

如果您想操作文件,您需要单独使用 ZipArchiveEntries。

这是一个例子:

Dim zipPath As String = "c:\example\start.zip" 
Dim extractPath As String = "c:\example\extract" 

Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
    For Each entry As ZipArchiveEntry In archive.Entries
        entry.ExtractToFile(Path.Combine(extractPath, entry.FullName))
    Next 
End Using 

如果你只是想解压到不同的目录,你可以使用:

Dim zipPath As String = "c:\users\exampleuser\end.zip" 
Dim extractPath As String = "c:\users\exampleuser\extract" 

Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
    archive.ExtractToDirectory(extractPath)
End Using 

Source


编辑:

如果你不想保留结构,试试这个:

Dim zipPath As String = "c:\example\start.zip" 
Dim extractPath As String = "c:\example\extract" 

Dim zipPath As String = "c:\example\start.zip" 
Dim extractPath As String = "c:\example\extract"

Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
    For Each entry As ZipArchiveEntry In archive.Entries.Where(Function(a) Not String.IsNullOrEmpty(a.Name))
        entry.ExtractToFile(entry.Name)
    Next
End Using

【讨论】:

谢谢,但是使用机器人解决方案它仍然会创建文件夹 嗯,这可能是因为 zip 文件的目录。查看我的编辑,看看它是否有效。如果是这种情况,请相应地处理它。你需要自己做一些调查。我们无法为您逐一介绍每种情况。

以上是关于解压文件而不创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

安卓;检查文件是不是存在而不创建新文件

Android查看zip文件而不解压

如何在c#中解压.zip文件而不解压到新位置

如何在 Azure 存储容器中创建目录而不创建额外文件?

通过 PLSQL 打开文本文件而不创建目录

Python Django:在内存中创建文件对象而不实际创建文件