在Powershell中,如何拆分大型二进制文件?

djs*_*off 11 powershell

我已经在其他地方看到了文本文件的答案,但我需要为压缩文件执行此操作.

我有一个6G二进制文件,需要拆分成100M块.我在某处错过了unix的"head"模拟器吗?

djs*_*off 14

没关系.干得好:

function split($inFile,  $outPrefix, [Int32] $bufSize){

  $stream = [System.IO.File]::OpenRead($inFile)
  $chunkNum = 1
  $barr = New-Object byte[] $bufSize

  while( $bytesRead = $stream.Read($barr,0,$bufsize)){
    $outFile = "$outPrefix$chunkNum"
    $ostream = [System.IO.File]::OpenWrite($outFile)
    $ostream.Write($barr,0,$bytesRead);
    $ostream.close();
    echo "wrote $outFile"
    $chunkNum += 1
  }
}
Run Code Online (Sandbox Code Playgroud)

假设:bufSize适合内存.


小智 11

结果问题的答案是:你如何将它们重新组合在一起?

function stitch($infilePrefix, $outFile) {

    $ostream = [System.Io.File]::OpenWrite($outFile)
    $chunkNum = 1
    $infileName = "$infilePrefix$chunkNum"

    $offset = 0

    while(Test-Path $infileName) {
        $bytes = [System.IO.File]::ReadAllBytes($infileName)
        $ostream.Write($bytes, 0, $bytes.Count)
        Write-Host "read $infileName"
        $chunkNum += 1
        $infileName = "$infilePrefix$chunkNum"
    }

    $ostream.close();
}
Run Code Online (Sandbox Code Playgroud)