2
我正在製作更新某些文件的Powershell(版本3.0,.Net框架4.5)腳本。但是,其中一些需要首先檢查。在Powershell中,如何在ZipFile.OpenRead之後關閉句柄?
我打開一個JAR文件,並得到一個條目的用下面的代碼內容:
[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
$zentry = [IO.Compression.ZipFile]::OpenRead($moduleJarPath).Entries | Where-Object {$_.FullName -match '.*pom.xml'}
的入口是採用就是System.IO.StreamReader閱讀,在讀之後關閉,finally塊。
再往下看腳本,我將用更新的jar文件更新JAR文件,它可能具有相同的名稱。在這種情況下,該腳本失敗:
Copy-Item : The process cannot access the file 'E:\path\to\my\artifact.jar' because it is being used by another process.
它看起來像鎖被我自己的腳本,這似乎是合乎邏輯的,因爲我剛剛訪問的JAR舉行。我想關閉句柄,以便我的腳本可以覆蓋JAR。
在IO.Compression.ZipFile documentation中,沒有「close」方法。
如何解鎖?
謝謝! :)
完美,謝謝! –