您好 PowerShell 專家,
下面的腳本片段在將檔案添加到 Zip 檔案時起作用。但是,如果要添加的檔案在另一個程式中打開,則它會失敗并出現例外,“行程無法訪問檔案[..]”。我嘗試使用 [IO.FileShare]::ReadWrite 但還沒有成功。
關于如何打開檔案以讀取和寫入 zip 的任何建議,無論檔案是否在另一個程式中打開?
腳本源
# write entries with relative paths as names
foreach ($fname in $FullFilenames) {
$rname = $(Resolve-Path -Path $fname -Relative) -replace '\.\\',''
Write-Output $rname
$zentry = $zip.CreateEntry($rname)
$zentryWriter = New-Object -TypeName System.IO.BinaryWriter $zentry.Open()
$zentryWriter.Write([System.IO.File]::ReadAllBytes($fname)) #FAILS HERE
$zentryWriter.Flush()
$zentryWriter.Close()
}
uj5u.com熱心網友回復:
由于我們缺少您的代碼的一些重要部分,我將假設在這種情況下可能會起作用,并根據您的評論進行假設。
首先,您將使用以下命令打開檔案FileShare.ReadWrite:
$handle = [System.IO.File]::Open($fname, 'Open', 'Read', 'ReadWrite')
然后你應該能夠使用來自的.CopyTo(Stream)方法FileStream:
$zentry = $zip.CreateEntry($rname)
$zstream = $zentry.Open()
$handle.CopyTo($zstream)
$zstream.Flush()
$zstream.Dispose()
$handle.Dispose()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465548.html
上一篇:如何在保持完整功能的同時在VisualStudio中拆分我的代碼(c#)?
下一篇:以特定方式更改文本檔案中的文本
