在Windows系统上快速创build大文件?
与在Linux系统上快速创build大文件的方式一样吗? 我想在Windows系统上快速创build一个大文件。 大概我在想5GB。 内容并不重要。 一个内置命令或短batch file将是可取的,但如果没有其他简单的方法,我会接受一个应用程序。
fsutil file createnew <filename> <length>
其中<length>
以字节为单位。
尽pipefsutil
需要pipe理权限。
您可以使用Sysinternals Contig工具。 它有一个-n
开关,它创build一个给定大小的新文件。 它将几乎立即创build一个文件,而不像fsutil
,它不需要pipe理权限。
我正在寻找一种方法来生成数据的大文件,而不仅仅是稀疏的文件。 遇到以下技术 :
如果你想创build一个真实的数据文件,那么你可以使用下面的命令行脚本。
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
(依次运行上述两个命令,或者将它们添加到batch file中。)
上面的命令在几秒钟内创build一个1 MB的文件dummy.txt …
查看RDFC http://www.bertel.de/software/rdfc/index-en.html
RDFC可能不是最快的,但它确实分配了数据块。 绝对最快的将不得不使用较低级别的API来获取簇链,并将它们写入MFT而不写数据。
请注意,这里没有银弹 – 如果“创build”会立即返回,这意味着您得到一个只是伪造大文件的稀疏文件,但是直到您写入该文件才会获得数据块/链。 如果你只是读了,你会得到非常快的零,这可能会让你相信你的驱动器突然间得到了非常快的速度:-)
检查Windows Server 2003资源工具包工具 。 有一个叫Creatfil的工具。
CREATFIL.EXE -? : This message -FileName -- name of the new file -FileSize -- size of file in KBytes, default is 1024 KBytes
这与Solaris上的mkfile类似。
我需要一个普通的10 GB的文件进行testing,所以我不能使用fsutil
因为它创build稀疏文件(谢谢@ ZXX)。
@echo off :: Create file with 2 bytes echo.>file-big.txt :: Expand to 1 KB for /L %%i in (1, 1, 9) do type file-big.txt>>file-big.txt :: Expand to 1 MB for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt :: Expand to 1 GB for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt :: Expand to 4 GB del file-4gb.txt for /L %%i in (1, 1, 4) do type file-big.txt>>file-4gb.txt del file-big.txt
我想创build一个10 GB的文件,但由于某种原因,它只显示为4 GB,所以我想要安全,停在4 GB。 如果您确实希望确保您的文件将被操作系统和其他应用程序正确处理,请停止以1 GB扩展文件。
/* creates an empty file, which can take all of the disk space. Just specify the desired file size in the command line */ #include <windows.h> #include <stdlib.h> int main (int argc, char* ARGV[]) { int size; size = atoi(ARGV[1]); const char* full = "fulldisk.dsk"; HANDLE hf = CreateFile(full, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); SetFilePointer(hf, size, 0, FILE_BEGIN); SetEndOfFile(hf); CloseHandle(hf); return 0; }
find一个很好的工具,可以在https://github.com/SL5R0/GenFileconfiguration。;
它用随机数据填充目标文件,所以稀疏文件没有问题,而且为了我的目的(testing压缩algorithm),它提供了一个很好的白噪声级别。
打开Windows任务pipe理器,find你有最大的进程右键单击,然后单击Create dump file
。
这将在您的临时文件夹中创build一个相对于内存中进程大小的文件。
您可以轻松地创build一个文件大小的演唱会。
PowerShell单线程在C:\ Temp中创build一个文件来填充磁盘C:只剩下10MB:
[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
在编写完整的应用程序的时候,我们Python
家伙可以用4行代码来实现任意大小的文件,在Windows和Linux上( os.stat()
只是一个检查)。
>>> f = open('myfile.txt','w') >>> f.seek(1024-1) # an example, pick any size >>> f.write('\x00') >>> f.close() >>> os.stat('myfile.txt').st_size 1024L >>>
Plain ol C …这个版本是在WinXX的Mingw GCC下build立的,可以在任何'通用'的C平台上运行。
生成指定大小的空文件。 结果文件不仅仅是一个目录空间占用者条目,而且实际上占用了指定的字节数。 这很快,因为除了在closures之前写入的字节之外,没有发生实际写入。 我的实例生成一个文件充满零 – 这可能会因平台而异; 这prgm本质上build立了目录结构的任何数据挂起。
#include <stdio.h> #include <stdlib.h> FILE *file; int main(int argc, char **argv) { unsigned long size; if(argc!=3) { printf("Error ... syntax: Fillerfile size Fname \n\n"); exit(1); } size = atoi(&*argv[1]); printf("Creating %d byte file '%s'...\n", size, &*argv[2]); if(!(file = fopen(&*argv[2], "w+"))) { printf("Error opening file %s!\n\n" , &*argv[2]); exit(1); } fseek(file, size-1, SEEK_SET); fprintf(file, "%c", 0x00); fclose(file); }
…几MB内的1 MB文件dummy.txt。
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
看到这里: http : //www.windows-commandline.com/how-to-create-large-dummy-file/
你可以试试这个C ++代码:
#include<stdlib.h> #include<iostream> #include<conio.h> #include<fstream> #using namespace std; int main() { int a; ofstream fcout ("big_file.txt"); for(;;a += 1999999999){ do{ fcout<<a; } while(!a); } }
也许这将需要一些时间来生成取决于你的CPU速度…
我正在寻找一种方法来创build最近的空间分配大型虚拟文件。 所有的解决scheme看起来都很尴尬。 最后,我刚刚在Windows中启动了DISKPART
实用程序(从Windows Vista开始embedded):
DISKPART CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
MAXIMUM是最终的文件大小,20GB在这里。
临时文件应存储在Windows临时文件夹中。 基于Rod的答案,你可以使用下面的一个class轮创build一个5 GB的临时文件,返回文件名
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }
说明:
-
[System.IO.Path]::GetTempFileName()
在Windows临时文件夹中生成随机扩展名的随机文件名 - pipe道用于将名称传递给创build文件的
[System.IO.File]::Create($_)
- 使用
.SetLength(5gb)
将文件名设置为新创build的文件。 我有点惊讶地发现,PowerShell支持字节转换 ,这真的很有帮助。 - 文件句柄需要使用
.close
closures以允许其他应用程序访问它 - 用
;$_
返回文件名,用| ? { $_ }
| ? { $_ }
| ? { $_ }
确保只返回文件名,而不是由[System.IO.File]::Create($_)
返回的空string
在Python中简单的答案,如果你需要创build一个大型的真实文本文件,我只使用了一个简单的while循环,并能够在约20秒内创build一个5GB的文件。 我知道它的原油,但速度够快。
outfile=open("outfile.log","a+") def write(outfile): outfile.write("hello world hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world"+"\n") return i=0 while i < 1000000: write(outfile) i+=1 outfile.close()