3

私のOSとドライブは

OS: Windows XP sp2 or Linux SUSE 9 or Cygwin
Compiler: Visual C++ 2003 or Gcc or Cygwin
PC and os are both 32 bits

だから、どうすれば秒単位で超巨大なファイルを作成できますか

MappingFile関数を使用するように言われました。2Gでファイルを作成できなかったので...温かいご回答をいただければ幸いです。

4

8 に答える 8

10

Linuxで1GBのファイルを作成するために使用ddすると、低速のディスクを備えたある程度ロードされたボックスで57秒の「実時間」、および約17秒のシステム時間がかかります。

$ time dd if=/dev/zero of=bigfile bs=G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 53.9903 s, 19.9 MB/s

real    0m56.685s
user    0m0.008s
sys     0m17.113s
$
于 2009-11-30T03:51:46.057 に答える
4

あなたはddを使うことができます

dd if=/dev/zero of=bigfile.txt bs=$((1024*1024)) count=100

または、単純なシェルスクリプトと内容は関係ありません

1) create a dummy file with a few lines, eg 10 lines
2) use cat dummy >> bigfile in a while loop

eg

    while true
    do
      cat dummy >> bigfile.txt 
      #check for number of lines more than 10000 for example and break out of loop
    done

もう一度やりなさい

while true
do
  cat bigfile >> bigfile2.txt           
  # check for size and break out..
done
rm -f dummy bigfile
于 2009-11-30T03:50:58.833 に答える
2

ファイルは実際のディスク容量を使用する必要がありますか?そうでない場合は、いつでも(CygwinまたはLinuxで)次のことができます。

dd if=/dev/zero of=bigfile seek=7T bs=1 count=1

これにより、ほんの一瞬で空の7TBファイルが作成されます。もちろん、実際のディスク容量はあまり割り当てられません。大きなスパースファイルが作成されます。

CygwinまたはLinuxでプログラムを作成する場合、 ftruncateを呼び出すことで、Cプログラムでも同じことができます。

于 2009-11-30T04:08:15.977 に答える
2

システムの制限に応じて、ほんの一瞬で大きなファイルを作成できます...

FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
    fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);

これで遊んでください。

于 2009-11-30T04:45:06.780 に答える
2

cat / dev / urandom >> / home / mybigfile

ディスク容量がなくなるとエラーになります。

これはlinux/bsd/おそらくcgywin用です

于 2009-11-30T04:45:18.787 に答える
1

VMで使用しdd if=/dev/zero of=file;rm fileて、ディスクをいっぱいにし、完全になったらファイルを削除しました。これにより、何らかの理由で画像をもう少し圧縮することができ、どこかのフォーラムでそれを行うことについて読みました。

于 2009-11-30T04:56:30.263 に答える
1

Win2000 / XP/7では「fsutil」コマンドを使用できます。

c:> fsutil file createnew使用法:fsutil file createnew例:fsutil file createnew C:\ testfile.txt 1000

Reagrds

于 2010-06-23T13:12:02.347 に答える
0

スパースファイルが必要な場合は、CreateFile、DeviceIOFunctionとFSCTL_SET_SPARSE、およびFSCTL_SET_ZERO_DATAを使用して、Windows(NTFSボリューム)でも実行できます。詳細については、こちらをご覧ください

于 2009-11-30T20:41:31.623 に答える