void priznakshifr(QString put) //put-- полный путь исходного файла{ QMessageBox msg; msg.setText(QString::fromLocal8Bit("исходный файл")+put); msg.exec(); //put исходный файл //переводим старое имя файла в указатель на char char *imystarfaila= put.toLocal8Bit().data(); QFile file(put); //определяем размер старого файла в байтах //файл после кодировки-outfilepath qint64 pere=file.size(); // УЗНАЕМ РАЗМЕР ФАЙЛА В БАЙТАХ msg.setText(QString::number(pere)); msg.exec(); char buf[pere]; // создаем буффер для хранения информации старого файла QString rr=put; QString novfail=rr+"1"; //имя нового временного файла //ИМЯ ВРЕМЕННОГО ФАЙЛА //QString novfail=put+"1"; QByteArray br=novfail.toLocal8Bit(); // переводим новое имя файла в указатель на char char *imynovfaila=br.data(); ofstream f(imynovfaila); //открываем новый временный файл (если его нет то создаем его автоматически) f<<"zashifrovano"; // пишем в него ключевую фразу ifstream g; g.open(imystarfaila); // открываем старый файл g.read(buf,pere); // читаем данные в буфер из старого файла f.write(buf,pere); // пишем из буфера в новый файл file.remove(); //удаляем старый файл QFile file2(novfail); // переименовываем новый файл в имя старого file2.rename(put); g.close(); f.close();}
C++ (Qt)// файлы должны быть открыты и позиции записи/чтения установленыbool CopyFrom( QFile & inF, QFile & outF, qint64 total = -1 ){ char buf[64 * 1024]; if (total < 0) total = inF.size() - inF.pos(); while (total > 0) { qint64 num = qMin(total, (qint64) sizeof(buf)); inF.read(buf, num); outF.write(buf, num); if (inF.error() || outF.error()) return false; total -= num; } return true;}
C++ (Qt)// файлы должны быть открыты и позиции записи/чтения установленыbool CopyFrom( QFile & inF, QFile & outF, qint64 total = -1 ){ char buf[64 * 1024]; if (total < 0) total = inF.size() - inF.pos(); while (total > 0) { qint64 num = qMax(total, (qint64) sizeof(buf)); // <<<<< ??? inF.read(buf, num); outF.write(buf, num); if (inF.error() || outF.error()) return false; total -= num; } return true;}
QFile::rename("C:/oldlocation/oldname.txt", "C:/newlocation/newname.txt");
QFile file1(put); QString novfail=put+"1"; //имя нового временного файла //ИМЯ ВРЕМЕННОГО ФАЙЛА QByteArray br=novfail.toLocal8Bit(); // переводим новое имя файла в указатель на char char *imynovfaila=br.data(); ofstream f(imynovfaila); //пишем в новый файл 12 байт f<<"zashifrovano"; f.close(); QFile file2(novfail); //новый файл file1.open(QIODevice::ReadOnly); // открываем исходный файл для чтения file2.open(QIODevice::Append); //открываем новый файл для дозаписи в конец bool ok=CopyFrom(file1,file2,0);
bool ok=CopyFrom(file1,file2,0);
C++ (Qt)QFile outF(put + "1");outF.open(QIODevice::WriteOnly | QIODevice::Truncate); const char * sign = "zashifrovano"; // "encrypted"outF.write(sign, strlen(sign)); QFile inF(put);inF.open(QIODevice::ReadOnly);bool ok = CopyFrom(inF, outF);
C++ (Qt) QByteArray fl_header(320, 0); ...... // открываем файлы QFile inpf(full_fname); QFile outf(out_fname); // для чтения if (!inpf.open(QIODevice::ReadOnly)) { msgBox.setText("Error: can't open input file"); msgBox.exec(); goto met_ret; } // для записи if (!outf.open(QIODevice::WriteOnly)) { msgBox.setText("Error: can't open output file"); msgBox.exec(); goto met_ret; } // записываем заголовок outf.write(fl_header); cx = 0; // цикл записи файла while(!inpf.atEnd()) { QByteArray src = inpf.read(1024); const int sz = src.size(); QByteArray dst(sz, 0); for(int i = 0; i < sz; ++i) {dst[i] = fn_Shifr_byte(src[i]);} outf.write(dst); cx++; if(!(cx % 100)) { ui->lineEdit_byt->setText(QString::number(cx)); QApplication::processEvents(); } } met_ret: inpf.close(); outf.close();