我正在尝试测试我刚刚编写的一些流式文件上传/下载代码,但我需要一个巨大的(比我的内存大,如在> 4GB)文件来测试。什么是快速生成特定大小的文件(但内部没有特定数据)的好方法?
我知道我可以在我的硬盘上查看一个适当大小的文件,但我很好奇是否有其他好的方法来生成测试文件,特别是如果我想要一个特定的大小。下载文件也不好,因为我的连接速度很慢。
答案 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,它可能是我工作的公司的内部工具。