PowerShell,69个字节
param($f,$s)@(gc $f -en by)+,[byte]0*($s-(gi $f).length)|sc $f -en by
# ^ filename
# ^desired size
# ^ get content as byte stream
# ^force it to an array even if there's 0 or 1 byte
# ^append a byte array of nulls..
# ^..desired size - file size
# write to file with -encoding byte ^
$f对于文件,$s对于目标大小,另存为.ps1并运行
.\Add-NullBytesToFile.ps1 .\test.txt 10
它是一个外壳程序,因此应该有一个很小的循环,该循环会添加1个字节并带有>>输出重定向和追加,对吗?好吧,不,因为>>只输出UCS2-LE多字节编码,所以没有办法将单个字节添加到文件中..除非您使用的是PSv5.1,并且可以更改它,但是这样太长了,不具有竞争力:
$PSDefaultParameterValues['Out-File:Encoding']='utf8';while((gi $f).length-lt$c){[byte]0>>$f}
也许有一个.Net Framework方法?应该有,但是我不能让它实际写入任何字节或错误。但是反正更长了:
param($f,$s)[io.file]::WriteAllBytes($f,[byte[]](,0)*($c-(gi $f).length), $True)
b