/** * @brief FuncModuleWin::copyFile * @param fromFIleName 優盤里面的文件 * @param toFileName 拷貝到/bin里面的啟動文件 * @return */ bool FuncModuleWin::copyFile(const QString &fromFIleName, const QString &toFileName) { char* byteTemp = new char[4096];//字節數組 int fileSize = 0; int totalCopySize = 0; QFile tofile; ui->progressBar_copy->setValue(0); tofile.setFileName(toFileName); QDataStream out(&tofile); out.setVersion(QDataStream::Qt_4_8); QFile fromfile; fromfile.setFileName(fromFIleName); if(!fromfile.open(QIODevice::ReadOnly)){ qDebug() << "open fromfile failed!!!"; return false; } fileSize = fromfile.size(); QDataStream in(&fromfile); in.setVersion(QDataStream::Qt_4_8); ui->progressBar_copy->setRange(0, fileSize); while(!in.atEnd()) { int readSize = 0; //讀入字節數組,返回讀取的字節數量,如果小於4096,則到了文件尾 readSize = in.readRawData(byteTemp, 4096); out.writeRawData(byteTemp, readSize); totalCopySize += readSize; ui->progressBar_copy->setValue(totalCopySize); } if(totalCopySize == fileSize){ tofile.setPermissions(QFile::ExeUser); return true; } else return false; }