コード
var fs = require('fs');
var size = 1024;
var list = [];
for (var i = 0; i < size; i++) {
list[i] = 0;
}
fs.writeFileSync('out.txt', list.join(''));
見たまんまかと思いますが、sizeが指定容量で一旦配列にぶっこんでから、書き込んでいます。(引数で指定できるようにしてくれとか、言われそうではありますが。。)
このやり方だと、使えるメインメモリのサイズしか作れないので注意です。また、Node.jsは最大メモリサイズとかデフォルト値があるので、デフォを超える容量で作成したい場合、--max-old-space-size=4096
などと指定して確保量を上げてください。
本当はメモリに確保せず、都度書き込んでいけば良いじゃんという話もあるのですが、そんなに巨大なサイズ自分は要らないかなぁとか、若干コーディング面倒だなぁということで、諦めたエデュションとなっています。なんかリクエストが多かったら確保しない、諦めなかったエデュション用意しても良いかもですね(・∀・)
作った理由
Androidのスマホを使っているのですが、普通に初期化するとファイル自体は残ってしまう仕様らしいです(iphoneはちゃんとやってくれるのですが。。)
そこで、「暗号化してからリセットする」というのが定石となっているのですが、空き領域まで暗号化してくれるのかどうか?が、わからず、仮に削除したファイルが暗号化されないと、結果残っているのと一緒になります。(僕の使っているHTCだとファイル使用量が多いと暗号化に時間が掛ると書いてあったので、空き領域を暗号化していない可能性が高いです。)
なので、空き領域全部にファイルを書き込んでから暗号化したら完璧と思い作った次第です。