![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
![]()
Всем добрый день!
Меня интересует, как увеличить размер файла? Есть такая задача: Человек пишет в консоль слово, программа записывает это слово в файл, потом проскакивает 1024 байта и снова пишет его, потом снова проскакивает 1024 байта и снова пишет его, а потом в этих "пустых" 2048 байтах ещё что-то пишет. Дело в том, что fseek работает, когда нужно по выделенной памьяти файла прыгать, а что делать когда файл только что создали? Есть вариант забивать все это место чем-нибудь, а потом возвращатся в эти места, но может есть другой способ, более правильный и менее ресурсоемкий (вместо килобайта, могут быть и гигабайты). Всем спасибо. Прошу писать мне об граматических ошибках и неясностях. ![]()
Это ещё не конец и даже не начало конца, это возможно только конец начала.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
fseek работает и с пустыми файлами, проблема в том, что в пустом месте будет скорее всего "мусор", неинициализированные данные. Под NTFS можно делать sparse file - файлы с "дырками" на месте этих дырок будет читать нули. Если надо делать универсально, тогда надо писать вести учет какой участок файла уже занят а какой свободен и т.д. Вопрос вот в чем - а зачем все это нужно?
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 01.10.2008
Сообщений: 248
|
![]()
а в чем проблема записывать 1024 0-байта?
Контакты
skype, почта: bm@kwax.ru |
![]() |
![]() |
![]() |
#4 | |||
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
![]() Цитата:
Ну я пытаюсь писать универсально, потому не пойдет ) Но я веду учет этих участков. На счет fseek, у меня не получилось работать с пустыми файлами, сами гляньте: Код:
Цитата:
Цитата:
Это ещё не конец и даже не начало конца, это возможно только конец начала.
Последний раз редактировалось pufystyj; 23.11.2012 в 09:25. |
|||
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
![]() Не понял, забивать нулями? Я думал это быдет долго... ДУмал скорее мусором, что там уже есть...
Это ещё не конец и даже не начало конца, это возможно только конец начала.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 01.10.2008
Сообщений: 248
|
![]()
если ты не будешь делать по 5 тысяч записей в секунду то не заметишь
Контакты
skype, почта: bm@kwax.ru |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
![]()
Ну по идеи в начале запуска программы, файл создаеться, например 7 гигабайт... многовато )
лин, а что я туплю, чем бы не попробовать.
Это ещё не конец и даже не начало конца, это возможно только конец начала.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 01.10.2008
Сообщений: 248
|
![]()
ну так создай его в начале программы и заполни нулевыми байтами и потом работай с ним через fseek
Контакты
skype, почта: bm@kwax.ru |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 10.11.2010
Сообщений: 569
|
![]()
За 30 секунд программы 150 мегабайт... 5 минут = 1500 мегабайт.
Это ещё не конец и даже не начало конца, это возможно только конец начала.
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Я бы писал из одного потока а все остальные потоки добавляли бы в очередь на запись. Тогда вся это сложность оптпадает.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поменять расширение файла | TheSun | Помощь студентам | 1 | 28.11.2011 19:36 |
Расширение файла | tools | Visual C++ | 1 | 20.12.2010 08:38 |
Расширение файла в Delphi | vlad00777 | Помощь студентам | 3 | 18.10.2009 21:11 |
Получить расширение файла | Бутаков_Сергей | Общие вопросы Delphi | 11 | 21.09.2009 11:15 |
Расширение файла | Александр! | Операционные системы общие вопросы | 9 | 21.02.2009 16:37 |