我想读取存储在ZIP文件中的文本文件。
目前,我使用7Zip提取所需文件,将其读取并再次删除。
有没有一种方法可以读取它们而不将其提取到硬盘上?
最佳答案
tl; dr
是的,有一种方法。 ,但是有一个不错的方法吗? 不,绝对不是。
有一种方法。但这在很大程度上取决于您的操作系统。 PowerShell 5具有 Expand-Archive
,这使使用7Zip成为过时的方式,但是即使使用 Expand-Archive
,您也必须提取整个存档以读取文件的内容。
使用Windows机器,您可以使用shell.application
Com Object或 system.io.compression.filesystem
来完成此任务,如该线程中引用的那样:
How to read contents of a csv file inside zip file using PowerShell:
4. And one more way using native means:
Add-Type -assembly "system.io.compression.filesystem" $zip = [io.compression.zipfile]::OpenRead("e:\E.zip") $file = $zip.Entries | where-object { $_.Name -eq "XMLSchema1.xsd"} $stream = $file.Open() $reader = New-Object IO.StreamReader($stream) $text = $reader.ReadToEnd() $text $reader.Close() $stream.Close() $zip.Dispose()
XMLSchema1.xsd
是文件名所在的位置。链接的答案提到了其他一些方式(这些方式大多与外部依赖项和Windows操作系统链接)。它们中的大多数仍至少提取一个文件,但要准确地说:
关于powershell - 在Powershell中读取ZIP中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45981861/