0

我正在尝试将二进制 AFP 文件附加到一个文件中。当我在同一个文件下面使用我的代码时,我将三个文件写入了三个文件,而不是三个文件附加到一个文件中。为什么 $bytes 的值不会改变?Get-Content 不成功,但未导致 AFP 文件出现错误。

$dira = "D:\User1\Desktop\AFPTest\"

$list = get-childitem $dira -filter *.afp -recurse | % { $_.FullName } | Sort-Object

foreach($afpFile in $list){

    $bytes = [System.IO.File]::ReadAllBytes($afpFile) 

    [io.file]::WriteAllBytes("D:\User1\Desktop\AFPTest\Content.afp",$bytes)

}

下面的脚本是在我进行更改以将 $bytes 存储到 $data 变量然后写出 $data 之后。

$dira = "D:\User1\Desktop\AFPTest\"

$list = get-childitem $dira -filter *.afp -recurse | % { $_.FullName } | Sort-Object -descending



foreach($afpFile in $list){

    Write-Host $afpFile

    $bytes = [System.IO.File]::ReadAllBytes($afpFile)

    $data += $bytes 

}
    [io.file]::WriteAllBytes("D:\User1\Desktop\AFPTest\Content.afp",$bytes)

我试图通过将三个文件中的每一个设置为一个变量然后将它们添加到 $data 数组来手动组合它们,但是重复图像也会出现同样的问题。代码如下。

$dira = "D:\User1\Desktop\AFPTest\"

$list = get-childitem $dira -filter *.afp -recurse | % { $_.FullName } | Sort-Object

$file3 = [System.IO.File]::ReadAllBytes("D:\User1\Desktop\AFPTest\000001.afp")

$file2 = [System.IO.File]::ReadAllBytes("D:\User1\Desktop\AFPTest\000002.afp")

$file1 = [System.IO.File]::ReadAllBytes("D:\User1\Desktop\AFPTest\000003.afp")

$data = $file1 + $file2


[io.file]::WriteAllBytes("D:\User1\Desktop\AFPTest\AFP.afp",$data)
4

1 回答 1

2

WriteAllBytes()总是创建一个新文件。你想追加。尝试这个:

...
$bytes = @()
foreach($afpFile in $list) {
    $bytes += [System.IO.File]::ReadAllBytes($afpFile) 
}
[io.file]::WriteAllBytes("D:\User1\Desktop\AFPTest\Content.afp",$bytes)
于 2015-08-19T18:50:04.373 回答