Czy jest możliwa aktualizacja tylko części pliku w języku C++?Aktualizuj tylko część pliku binarnego za pomocą C++
Przykład:
stary plik A: 'A''A''A''B''B''C''C''C'
Nowy plik A: ' A''A''A”«X''X»«C''C''C»
jako rzeczywiste pliki nie są tak małe jak te przykłady, a ja wiem dokładnie, co się zmieniło (offset i writeLenght dla zmienionej zawartości) byłoby świetnie móc otworzyć plik, ustawić strumień we właściwej pozycji, zapisać informacje i zamknij plik ponownie .... ale to doprowadzi do pliku, który wygląda następująco:
Zaktualizowany plik: '0''0''0''X''X''C''C' ' C”
jest to kod użyłem:
void update file(list<unsigned char> content, int offset){
fs::basic_ofstream<char> fileStream(path , ios::out | ios::binary);
list< unsigned char >::const_iterator contentIter = content.begin();
// begin write operation at the offset
advance(contentIter , offset);
fileStream.seekp(offset);
while(contentIter != content.end()){
unsigned char value = (char)*contentIter;
fileStream.put(value);
++contentIter;
}
fileStream.close();
czy istnieje sposób, aby to zrobić, lub cały plik ma zostać przepisany za każdym razem zmienia?
Dziękujemy
Dziękuję za odpowiedź. Właśnie tego szukałem. Dotyczy znaków: Piszę program testów warunków skrajnych dla kart pamięci flash. Muszę umieć generować wzorce, w których każdy bajt ma określoną wartość. Wzory te są przechowywane wewnętrznie i zapisywane do pliku. Od czasu do czasu odczytywam je i porównuję z zapisanymi wzorami. Mogę wtedy określić dokładną pozycję błędu i sprawdzić, czy jest on odtwarzalny. – zitroneneis