Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这是在QT中复制两个二进制文件的最佳方法_Qt_Binary_File Copying - Fatal编程技术网

什么';这是在QT中复制两个二进制文件的最佳方法

什么';这是在QT中复制两个二进制文件的最佳方法,qt,binary,file-copying,Qt,Binary,File Copying,我想把一个二进制文件复制到另一个二进制文件。 我唯一的限制是复制必须通过QFile(因为我重载了一些内部方法,需要它们来运行)。 我写了一个简单的解决方法,但写得很慢: QFile * write_to = new QFile("myfile.bin"); if(write_to->open(QFile::WriteOnly)) { QFile read_from("my_outher_bin.bin"); if(read_from.open(QIODevice::Read

我想把一个二进制文件复制到另一个二进制文件。 我唯一的限制是复制必须通过
QFile
(因为我重载了一些内部方法,需要它们来运行)。 我写了一个简单的解决方法,但写得很慢:

QFile * write_to = new QFile("myfile.bin");
if(write_to->open(QFile::WriteOnly))
{
    QFile read_from("my_outher_bin.bin");
    if(read_from.open(QIODevice::ReadOnly))
    {
        QDataStream write_data(write_to);
        QDataStream read_data(&read_from);

        while(write_to->size() < read_from.size())
            write_data << read_data;         
   }
}
QFile*write_to=newqfile(“myfile.bin”);
如果(写入->打开(QFile::WriteOnly))
{
QFile读取自(“my_out her_bin.bin”);
if(从.open(QIODevice::ReadOnly)读取)
{
QDataStream写入数据(写入);
QDataStream读取数据(从中读取(&R);
while(write_to->size()写入数据一种简单安全的方法,使用STD库,是一个很好的选择:

std::ifstream  src("file.txt", std::ios::binary);
std::ofstream  dst("to_file.txt",   std::ios::binary);
dst << src.rdbuf();

使用STD库是一种简单而安全的方法,是一个很好的选择:

std::ifstream  src("file.txt", std::ios::binary);
std::ofstream  dst("to_file.txt",   std::ios::binary);
dst << src.rdbuf();

为什么不呢?您更改了哪些内部方法?我更改了读写方法以在文件上添加加密和解密。文件大小是多少?800mb到5gb(可以先读取到内存(在64位windows上是im),但我认为这不是最有效的方法)查看
QFile::copy
的方法,它似乎仍然使用
read
write
方法,如果这不起作用,则复制代码并执行类似操作(它们使用4k字节缓冲区并分块复制数据)。为什么不呢?您更改了哪些内部方法?我更改了读写方法以在文件上添加加密和解密。文件大小是多少?800mb到5gb(可以先读取到内存(在64位windows上为im),但我认为这不是最有效的方法)查看
QFile::copy
的方法,它似乎仍然使用
read
write
方法,如果这不起作用,则复制代码并执行类似操作(它们使用4k字节缓冲区并分块复制数据)。他们正在寻找使用QFile的方法,因为他们正在重载某些内部方法。问题是什么?您仍然可以使用此函数,您可以访问完整的文件名或路径。他们正在寻找使用QFile的方法,因为他们正在重载某些内部方法。问题是什么?您仍然可以使用此函数在上,您可以访问完整的文件名或路径。