制作庞大的测试文件有什么好方法?

时间:2009-04-01 19:50:20

标签: testing file

我正在尝试测试我刚刚编写的一些流式文件上传/下载代码,但我需要一个巨大的(比我的内存大,如在> 4GB)文件来测试。什么是快速生成特定大小的文件(但内部没有特定数据)的好方法?

我知道我可以在我的硬盘上查看一个适当大小的文件,但我很好奇是否有其他好的方法来生成测试文件,特别是如果我想要一个特定的大小。下载文件也不好,因为我的连接速度很慢。

7 个答案:

答案 0 :(得分:9)

在Unix上这很简单:

head -c <numbytes> /dev/random > bigfile.dat

因此对于4千兆字节,这将是approximately

head -c 4294967296 /dev/random > bigfile.dat

答案 1 :(得分:6)

在* nix系统上,您可以创建一个几乎不使用任何实际磁盘空间的稀疏文件。

dd if=/dev/zero bs=1 seek=4294967295 count=1 of=4G
ls -l 4G
-rw-r--r-- 1 me wheel 4294967296 2009-04-01 13:28 4G

这会在开头创建一个大小为4GB - 1的文件的文件。该漏洞不会占用文件系统块。您甚至可以创建太大而无法放入文件系统的稀疏文件。从洞中读取会返回零。

答案 2 :(得分:5)

在Windows上,您还可以使用fsutil命令:

Usage : fsutil file createnew <filename> <length>
   Eg : fsutil file createnew C:\testfile.txt 1000

这将创建一个名为testfile.txt的文件,大小为1,000字节。如果重要的话,该文件只包含NUL。

答案 3 :(得分:1)

在* nix平台上,您可以执行以下操作:

dd if=/dev/zero of=test5000M.bin bs=5000000000 count=1

哪会产生5000mb的文件。

在Windows上,这样的事情应该有效:

fsutil file createnew test5000M.bin 5000000000

答案 4 :(得分:1)

以下是a function在Windows PowerShell中执行此操作:

function Create-TestFile([string]$location, [long]$sizeInBytes, [int]$numberOfFiles = 1 ,[char]$fillerChar="X")
{
$fc = new-object string ($fillerChar, $sizeInBytes ) ;
1..$numberOfFiles | %{ [io.file]::WriteAllText("$location\TestFile-$_.txt", $fc) }
}

以下是你如何使用它:

Create-TestFile "C:\temp" 2100 #creates a file 2100 bytes in size.

答案 5 :(得分:0)

我过去只是在文件末尾进行搜索和写操作,以分配大量的块。

但是,根据您使用的尺寸,这可能会失败。 (根据我在WinXP上的经验,接近1.2 TB的限制)

我成功地将此方法用于硬盘驱动器老化应用程序,用于相当多的不同系统配置。

答案 6 :(得分:0)

我曾经在当天使用过eatbits.exe实用程序。您可以在哪里创建这些文件。它们对于安装测试非常有价值。

我无法在网上任何地方找到eatbits,它可能是我工作的公司的内部工具。