void Tree::rebuildOriginalFile(char *pathIn) { string info, aux_s,aux_s2; ifstream file; unsigned char* buffer; info.clear(); rebuildTree(tree_written); //printNo(root); equilibrar(tree_written); file.open(pathIn, ios::in | ios::binary | ios::ate); if(file.is_open()){ int size = file.tellg(); file.seekg(0, ios::beg); buffer = new unsigned char[size]; for(int i = 0; i < parada; i++){ file.get(); } for(int i = parada;i < size-1;i++){ unsigned char ch = file.get(); const unsigned char c = (const unsigned char)ch; info += charParaString(c); } aux_s = info; const char c = file.get(); aux_s2 = charParaString(c); removeTrash(aux_s2); aux_s += aux_s2; procurafinal(aux_s); } else { cout << "TRASH!" << endl; } file.close(); }
void Tree::readHeader(string header){ int byte1 = 0; int aux_i = 0; const char* c; unsigned char aux_uc; string aux_s, aux_s2; string trash; string tree_length; aux_s.clear(); aux_s = header[0]; c = aux_s.c_str(); aux_uc = c[0]; byte1 = (int)aux_uc; aux_s.clear(); aux_i = byte1/2; if(byte1%2 == 1){ aux_s += "1"; } else if(byte1%2 == 0){ aux_s += "0"; } aux_i = byte1; while(aux_i > 1){ aux_i = aux_i/2; if(aux_i%2 == 1){ aux_s += "1"; } else if(aux_i%2 == 0){ aux_s += "0"; } } if(aux_s.length() < 8){ int j = 0; j = 8 - aux_s.length(); for(int i = 0; i < j;i++){ aux_s += "0"; } } reverse(aux_s.begin(),aux_s.end()); trash = aux_s.substr(0,3); sizeTrash = binarioParaDecimal(trash); tree_length = aux_s.substr(3,5); aux_s2 = header[1]; const char* ch = aux_s2.c_str(); const char cz = ch[0]; tree_length += charParaString(cz); sizeTree = binarioParaDecimal(tree_length); aux_s2 = header[2]; ch = aux_s2.c_str(); const char cw = ch[0]; aux_s = charParaString(cw); sizeFileName = binarioParaDecimal(aux_s); parada = sizeFileName + 3 + sizeTree; }
//Reconstrói o arquivo original void Tree::rebuildOriginalFile(char *pathIn) { std::string info, aux_s,aux_s2; std::ifstream file; std::string oux, oux2; int sobra2 = 0; unsigned char* buffer; int x = 0; info.clear(); rebuildTree(tree_written); //printNo(root); equilibrar(tree_written); file.open(pathIn, std::ios::in | std::ios::binary | std::ios::ate); if(file.is_open()) { int size = file.tellg(); file.seekg(0, std::ios::beg); buffer = new unsigned char[size]; for(int i = 0; i < parada; i++) { file.get(); } for(int i = parada;i < size-1;i++) { unsigned char ch = file.get(); const unsigned char c = (const unsigned char)ch; info += charParaString(c); //ajeitar /* if(info.length() == 1024) { //sobra2 = info.length() - 1024; //oux = info.substr(1024, sobra2); //oux2 = info.substr(0,1024); aux_s = procura(info,&x); cout << "aux_s size: " << aux_s.length() << endl; info.clear(); info += aux_s; //info += oux; aux_s.clear(); //oux.clear(); //oux2.clear(); } */ } //x = info.length(); int sobra = 1024 - info.length(); //aux_s = info.substr(x,sobra); aux_s = info; const char c = file.get(); aux_s2 = charParaString(c); removeTrash(aux_s2); aux_s += aux_s2; // cout << "aux_s: "; // for(int i = 0; i < aux_s.length();i++) // { // cout << aux_s[i] << " "; // if((i-1)%8 == 0 && i != 0) // { // cout << endl; // cout << "aux_s: "; // } // } procurafinal(aux_s); } else { cout << "eRRO!" << endl; } file.close(); }