bool GUIEngine::downloadFile(std::string url,std::string target) { #if USE_CURL std::ofstream targetfile(target.c_str(), std::ios::out | std::ios::binary); if (!targetfile.good()) { return false; } HTTPFetchRequest fetchrequest; HTTPFetchResult fetchresult; fetchrequest.url = url; fetchrequest.caller = HTTPFETCH_SYNC; httpfetch_sync(fetchrequest, fetchresult); if (fetchresult.succeeded) { targetfile << fetchresult.data; } else { return false; } return true; #else return false; #endif }
vector<chunkdat> getmergedUnmatchedBlocks(vector<BlockChecksum> checksumBlocks, vector<bool> unmatchedBlockData,string filepath, vector<int> *blockOffsets){ DeltaHandler deltahandler; ifstream targetfile(filepath.c_str(), std::ifstream::binary); int length=0,beforedelta=0,afterdelta=0; vector<chunkdat> blocks; for(int i=0;i<unmatchedBlockData.size();i++){ if(!unmatchedBlockData[i]){ chunkdat block; length=checksumBlocks[i].getLength(); Bytef sourceblock[1024*65]={0}; targetfile.seekg(checksumBlocks[i].getOffset()); targetfile.read((char *)sourceblock, length); blockOffsets->push_back(checksumBlocks[i].getOffset()); while(i+1<unmatchedBlockData.size()){ if(!unmatchedBlockData[i+1]){ if(checksumBlocks[i+1].getLength()+length<65536){ i++; targetfile.seekg(checksumBlocks[i].getOffset(), targetfile.beg); targetfile.read((char *)(sourceblock+length),checksumBlocks[i].getLength()); length+=checksumBlocks[i].getLength(); } else break; } else{ i++; } blockOffsets->push_back(checksumBlocks[i].getOffset()); } Bytef* deltablock; unsigned long int deltasize=0; deltahandler.getDeltaBlock(sourceblock,length,&deltablock,&deltasize); memcpy(block.data,reinterpret_cast<char *>(deltablock),deltasize); block.chunk_size=deltasize; beforedelta+=length; afterdelta+=deltasize; blocks.push_back(block); } else blockOffsets->push_back(checksumBlocks[i].getOffset()); } cout<<"Size before delta: "<<beforedelta<<" bytes\n"; cout<<"Size after delta: "<<afterdelta<<" bytes\n"; targetfile.seekg(0, targetfile.end); length=targetfile.tellg(); blockOffsets->push_back(length); targetfile.close(); return blocks; }
chunkdat getSmallFile(string fullpath, int filesize){ ifstream targetfile(fullpath.c_str(), std::ifstream::binary); targetfile.seekg(0,targetfile.beg); chunkdat filedat; targetfile.read(filedat.data,filesize); filedat.chunk_size=filesize; targetfile.close(); return filedat; }
void CK_FileMerger::on_btnStart_clicked() { QFile sourcefile(this); QFile targetfile(ui->lineTarget->text()); targetfile.open(QIODevice::WriteOnly|QIODevice::Text); QTextStream out(&targetfile); out.setCodec("UTF-8"); //자바스타일 이터레이터 선언 QStringListIterator itrFiles(strlstSourcefileNames); while (itrFiles.hasNext()) { sourcefile.setFileName(itrFiles.next().toLocal8Bit().constData()); ui->lstSource->addItem(sourcefile.fileName()); if(sourcefile.open(QFile::ReadOnly|QFile::Text)) { //한글사용을 위해 fromLocal8Bit함수 사용 QString text = QString::fromLocal8Bit(sourcefile.readAll()); //엔터키 정리 text = text.simplified(); //title list를 뽑아내는 함수 titleExtract() QStringList* strlstTitles; strlstTitles = titleExtract(text); //body list를 뽑아내는 함수 bodyExtract(), 나중에 <header>...</header>는 제거한다. QStringList* strlstBodies; strlstBodies = bodyExtract(text); for(int i=0; i<strlstTitles->length();++i) { QString txt = strlstTitles->at(i); if(!txt.isEmpty()){ ui->txtSource->setPlainText(txt+" is being processed."); out<<txt<<"\t"<<strlstBodies->at(1)<<"\n"; ui->txtSource->appendPlainText(txt+" is compiled over."); } } ui->lineSource->setText(sourcefile.fileName()); } sourcefile.close(); } //ui->txtSource->appendPlainText("\r\n"); out<<"\n"; targetfile.close(); }
int main(int argc, char *argv[]) { QString sourcefilename; QString targetfilename; QCoreApplication app( argc, argv ); for ( int i = 1; i < argc; ++i ) { if ( strcmp( argv[ i ], "-o" ) != 0 ) continue; targetfilename = QString(argv[i+1]); sourcefilename = QString(argv[i+2]); qDebug() << "Source: " << sourcefilename; qDebug() << "Target: " << targetfilename; QFile sourcefile( sourcefilename ); sourcefile.open( QIODevice::ReadOnly ); // Read the data serialized from the file. QTextStream sourcestream( &sourcefile ); sourcestream.setCodec("UTF-8"); QFile targetfile( targetfilename ); targetfile.open( QIODevice::ReadWrite ); QTextStream targetstream( &targetfile ); targetstream.setCodec("UTF-8"); // gzFile gzDoc = gzopen( targetfilename.toLatin1(), "w"); // QTextStream targetstream( new QString() ); targetstream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" << "<kml xmlns=\"http://earth.google.com/kml/2.1\"> \n" << "<Document> \n"; targetstream << " <Schema name=\"MarblePlacemark\" parent=\"Placemark\"> \n"; targetstream << " <SimpleField name=\"pop\" type=\"int\"></SimpleField> \n"; targetstream << " <SimpleField name=\"role\" type=\"string\"></SimpleField> \n"; targetstream << " </Schema> \n"; targetstream << "\n"; QString rawline; QString nameString; QString latString; QString lonString; QString popString; QString roleString; QString description; float lat; float lon; int population; QStringList splitline; while ( !sourcestream.atEnd() ) { rawline = sourcestream.readLine(); // if ( !rawline.startsWith("\"E\"|\"m\"|\"" ) ) { if ( !rawline.startsWith("\"V\"|\"V\"|\"" ) ) { continue; } rawline = rawline.replace( "\"|", "|" ); rawline = rawline.replace( "|\"", "|" ); if ( rawline.startsWith('\"') && rawline.endsWith('\"') ) { rawline = rawline.left( rawline.length() - 1 ); rawline = rawline.right( rawline.length() - 2 ); } splitline = rawline.split('|'); nameString = splitline[2]; latString = splitline[3]; lonString = splitline[4]; popString = splitline[10]; roleString = splitline[18]; description = splitline[19]; // if ( roleString == "SF" ) continue; QString marbleRoleString = 'o'; if ( roleString == "AA" || roleString == "SF" ) marbleRoleString = "c"; if ( roleString == "ME" || roleString == "OC" || roleString == "LC" || roleString == "SI" ) marbleRoleString = "a"; if ( roleString == "MO" ) marbleRoleString = "m"; if ( roleString == "VA" ) marbleRoleString = "v"; population = (int) ( 1000.0 * popString.toFloat() ); lon = lonString.toFloat(); if ( lon > 180.0 ) lon = lon - 360.0; if ( rawline.startsWith("\"M\"|\"M\"|\"" ) || rawline.startsWith("\"V\"|\"V\"|\"" ) ) { lon = -lon; } lat = latString.toFloat(); description = description.remove('"'); targetstream << " <MarblePlacemark> \n"; targetstream << " <name>" << escapeXml( nameString ) << "</name> \n"; targetstream << " <role>" << escapeXml( marbleRoleString ) << "</role> \n"; targetstream << " <pop>" << escapeXml( QString::number( population ) ) << "</pop> \n"; targetstream << " <description>" << escapeXml( description ) << "</description> \n"; targetstream << " <Point>\n" << " <coordinates>" << escapeXml( QString::number( lon ) ) << "," << escapeXml( QString::number( lat ) ) << "</coordinates> \n" << " </Point> \n"; targetstream << " </MarblePlacemark> \n"; } targetstream << "</Document> \n" << "</kml> \n"; qDebug("..."); sourcefile.close(); targetfile.close(); qDebug("Finished!"); return 0; } qDebug(" iau2kml -o targetfile sourcefile"); app.exit(); }
int main(int argc, char *argv[]) { QCoreApplication app( argc, argv ); for ( int i = 1; i < argc; ++i ) { if ( strcmp( argv[ i ], "-o" ) != 0 ) continue; const QString targetfilename = QString( argv[i+1] ); const QString sourcefilename = QString( argv[i+2] ); const QString supportfilename = QString( argv[i+3] ); const QString timezonefilename = QString( argv[i+4] ); qDebug() << "Source: " << sourcefilename; qDebug() << "Support: " << supportfilename; qDebug() << "Target: " << targetfilename; qDebug() << "Timezone: " << timezonefilename; QFile sourcefile( sourcefilename ); sourcefile.open( QIODevice::ReadOnly ); // Read the data serialized from the file. QTextStream sourcestream( &sourcefile ); sourcestream.setCodec("UTF-8"); QFile targetfile( targetfilename ); targetfile.open( QIODevice::WriteOnly ); QTextStream targetstream( &targetfile ); targetstream.setCodec("UTF-8"); QFile supportfile( supportfilename ); supportfile.open( QIODevice::ReadOnly ); QTextStream supportstream( &supportfile ); supportstream.setCodec("UTF-8"); QFile timezonefile( timezonefilename ); timezonefile.open( QIODevice::ReadOnly ); QTextStream timezonestream( &timezonefile ); timezonestream.setCodec("UTF-8"); // gzFile gzDoc = gzopen( targetfilename.toLatin1(), "w"); // QTextStream targetstream( new QString() ); targetstream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" << "<kml xmlns=\"http://earth.google.com/kml/2.1\"> \n" << "<Document> \n"; QString state; QString gmt; QString dst; while ( !sourcestream.atEnd() ) { const QString rawline = sourcestream.readLine(); const QStringList splitline = rawline.split('\t'); const QString name = splitline[1]; const QString latstring = splitline[4]; const QString lngstring = splitline[5]; const QString role = splitline[7]; const QString country = splitline[8]; const QString statecode = splitline[10]; const QString popstring = splitline[14]; const QString elestring = splitline[16]; const QString timezone = splitline[17]; supportstream.seek(0); while ( !supportstream.atEnd() ) { const QString supportrawline = supportstream.readLine(); const QStringList supportsplitline = supportrawline.split('\t'); if(supportsplitline[0] == (country + '.' +statecode)) { state = supportsplitline[1]; break; } } timezonestream.seek(0); timezonestream.readLine(); while ( !timezonestream.atEnd() ) { const QString timezonerawline = timezonestream.readLine(); const QStringList timezonesplitline = timezonerawline.split('\t'); if( timezonesplitline[0] == timezone ) { gmt = timezonesplitline[1]; dst = timezonesplitline[2]; break; } } const int gmtoffset = ( int ) ( gmt.toFloat() * 100 ); const int dstoffset = ( int ) ( dst.toFloat() * 100 ) - gmtoffset; if(role != "PPLX") { targetstream << " <Placemark> \n"; targetstream << " <name>" << escapeXml( name ) << "</name> \n"; targetstream << " <state>" << escapeXml( state ) << "</state> \n"; targetstream << " <CountryNameCode>" << escapeXml( country.toUpper() ) << "</CountryNameCode>\n"; targetstream << " <role>" << escapeXml( role ) << "</role> \n"; targetstream << " <pop>" << escapeXml( popstring ) << "</pop> \n"; targetstream << " <Point>\n" << " <coordinates>" << escapeXml( lngstring ) << "," << escapeXml( latstring ) << "," << escapeXml( elestring ) << "</coordinates> \n" << " </Point> \n"; targetstream << " <ExtendedData>\n" << " <Data name=\"gmt\">\n" << " <value>" << escapeXml( QString::number( gmtoffset ) ) << "</value>\n" << " </Data>\n"; if( dstoffset ) { targetstream << " <Data name=\"dst\">\n" << " <value>" << escapeXml( QString::number( dstoffset) ) << "</value>\n" << " </Data>\n"; } targetstream << " </ExtendedData>\n"; targetstream << " </Placemark> \n"; } } targetstream << "</Document> \n" << "</kml> \n"; qDebug("Putting"); // gzputs( gzDoc, targetstream.readAll().toUtf8() ); // gzclose( gzDoc ); sourcefile.close(); targetfile.close(); supportfile.close(); timezonefile.close(); qDebug("Finished!"); return 0; } qDebug(" asc2kml -o targetfile sourcefile supporfile timezonefile"); app.exit(); }