3

我的操作系统和驱动器是

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 中使用dd创建一个 1 gb 的文件需要 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

或者只是简单的 shell 脚本和内容无关紧要

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

这将在几分之一秒内创建一个空的 7 TB 文件。当然,它不会分配太多实际磁盘空间:您将拥有一个大的稀疏文件

在 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

猫 /dev/urandom >> /home/mybigfile

磁盘空间用完时会出错。

这适用于 linux/bsd/可能是 cgywin

于 2009-11-30T04:45:18.787 回答
1

在虚拟机中使用时,我做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

回复

于 2010-06-23T13:12:02.347 回答
0

如果你想要一个稀疏文件,你也可以在 Windows 上(在 NTFS 卷上)使用 CreateFile、DeviceIOFunction 和 FSCTL_SET_SPARSE 和 FSCTL_SET_ZERO_DATA;有关更多信息,请参见此处

于 2009-11-30T20:41:31.623 回答