如何创建特定大小的文本文件c ++

时间:2013-11-28 13:09:10

标签: c++

我必须创建一个特定大小的文本文件,用户输入大小。我需要知道的是如何使文件更快。目前创建一个10mb文件大约需要15秒。我必须将此减少到最多5秒。我怎样才能做到这一点?目前这就是我制作文件的方式

void create_file()
{
    int size;
    cout<<"Enter size of File in MB's : ";
    cin>>file_size;
    size = 1024*1024*file_size;   // 1MB = 1024 * 1024 bytes
    ofstream pFILE("my_file.txt", ios::out);

    for(int i=0; i<size; i++)   //outputting spces to create file
        pFILE<<' ';

    pFILE.close();
}

更新,这就是我现在使用的,但我也将垃圾值写入文件,

void f_c()
{
int i, size;
cin>>size;
FILE * new_file = fopen("FILE TEST.txt", "w");
char buffer[1024];
memset(buffer,' ', 1024);
for(i = 0; i<1024 * size; i++)
    fputs(buffer, new_file);
getchar();
 }

3 个答案:

答案 0 :(得分:4)

你一次只填一个角色。相反,您可以使用new分配更大的内存块,然后一次写入更大的块以加快进程。您可以在分配的内存上使用memset以防止在内存中包含字节字符。但是看看关于重复问题的评论,如果文件最初不需要具有特定内容,则有更快的方法。

答案 1 :(得分:0)

这是一个简单的示例,但没有错误检查。

假设你想要1000的大小:

#include <fstream>   

int main () {
  int size = 1000;
  const char* filename= "file.txt";
  std::ofstream fout(filename);

  fout.fill (' ');
  fout.width (size);
  fout << " ";

  return 0;
}

答案 2 :(得分:0)

如果你只是想创建一个大文件,那么你不必填写文件中的所有字节,这会让它变慢,只需告诉文件系统你想要多大的文件

在Linux上,使用truncate

truncate("data.txt",1024*1024*1024);

Windows使用SetFilePointer

SetFilePointer (hFile, 1024*1024*1024, NULL, FILE_BEGIN); 

他们都可以在不到几秒的时间内创建几千兆字节的未初始化文件。