У меня есть файл на окнах. Я пишу на C++. У меня проблема, когда мне нужно удалить несколько байтов с конца файла. Я использую ifstream, но я не знаю, как удалить эти символы, просто положить '\ 0' в файл или что?Изменение двоичного файла
ответ
На Linux машинах, использование усечь(): http://linux.die.net/man/2/truncate
На машинах Windows, используйте SetEndOfFile():
http://msdn.microsoft.com/en-us/library/aa365531%28v=vs.85%29.aspx
Обе ОС зависимых вызовов.
Использование SetEndOfFile для окон. Мне нужно найти место, где я хочу быть, и затем я использую этот метод? Если я снова открою его и перейду в EOF, это будет новый размер? –
обновлено ... см. Ссылку. написано, что вам нужно искать место, где вы хотите, чтобы ваш «EOF» был. –
Почему бы не обрезать файл? Посмотрите на метод chsize()
.
Я не вижу его в API ifstream –
, он не является частью iostreams, это отдельный метод, который вы вызываете с файлом, - который изменит размер файла (и, следовательно, удалит завершающие байты - что, по-видимому, вы хотите?) – Nim
Использование chsize для окон. Если я снова открою его и перейду в EOF, это будет новый размер? –
Вы не можете переносить размер файла; единственный способ сделать это - скопировать файл в временный, затем удалить оригинал и переименовать временный.
Если это всего лишь случай усечения файла, то Windows и Unix (но не обязательно другие системы) имеют функции системного уровня, которые могут это сделать, но в стандарте, поддерживающем его, нет ничего. И если вам когда-либо удастся удалить байты, отличные от конца, ни Windows, ни Unix не позволяют это (хотя некоторые другие системы делают, по крайней мере, в конкретных случаях).
Мне нужно сделать это только в конце, а не в середине или в начале. Мой вопрос: если я использую его в Windows, будут ли обновлены все другие внутренние параметры ОС для изменения? –
Если вы хотите использовать boost, 1.46 теперь поддерживает метод 'resize()', который должен позволить степень переносимости - почему он не был включен с самого начала, это тайна ... – Nim
@ Roman Если вы используете зависящей от системы, он будет выполнять то, что система указывает на это. Если в спецификациях системы указано, что он обрезает файл, он обрезает файл (или в системе есть ошибка). –
- 1. Изменение содержимого двоичного файла в Java
- 2. Изменение двоичного файла объекта в каждой сборке
- 3. Изменение двоичного файла PHP, используемого localhost
- 4. Изменение двоичного дерева поиска
- 5. простой формат файла двоичного файла
- 6. Как обрабатывать местоположение двоичного двоичного файла Firefox?
- 7. Изменение размера двоичного изображения ошибочно
- 8. Изменение контрольной суммы двоичного кода
- 9. Изменение элементов двоичного дерева C++
- 10. Ошибка чтения двоичного файла
- 11. DataGridView из двоичного файла
- 12. Перекодировка двоичного файла
- 13. Запись двоичного файла chunk
- 14. Чтение структурированного двоичного файла
- 15. проблема шифрования двоичного файла
- 16. Запись двоичного файла
- 17. Чтение двоичного файла назад
- 18. Сохранение двоичного файла
- 19. Структура двоичного файла?
- 20. Android: Чтение двоичного файла
- 21. Создание случайного двоичного файла
- 22. Представление двоичного файла C
- 23. чтение двоичного файла
- 24. Анализ двоичного файла: производительность
- 25. Сортировка двоичного файла
- 26. Гистограмма графика двоичного файла
- 27. Чтение двоичного файла C
- 28. Чтение двоичного файла пошагово
- 29. Чтение двоичного файла C++
- 30. Хранение большого двоичного файла
'iofstream'? Ты уверен? –