Запись в файл с новой строки - страница 2

 
EfremovSergey:
Подскажить плз как можно удалить строку после её прочтения, есть какой-нибудь простой способ данной операции?

Прочтения кем? Если Вами, то можете стереть руками. Если роботом, то это бессмысленно. Можно сразу по получению данных принять решение по алгоритму.

 
Valeriy Yastremskiy:

Прочтения кем? Если Вами, то можете стереть руками. Если роботом, то это бессмысленно. Можно сразу по получению данных принять решение по алгоритму.

В моём представление если не избавляться от уже обработанной информации, то тогда придётся тратить ресурсы на её повторный анализ.

 
Ihor Herasko:

В большинстве случаев лучше считать весь файл, произвести с данными необходимые изменения в оперативной памяти, а потом перезаписать файл целиком. Это проще, чем перемещать данные внутри открытого файла.

Такой вопрос, связанный с прочтением файла целиком, в случае если один советник в данный момент производит чтение из файла, то другой советник может обратиться к этому же файлу одновременно с первым для произведения своих каких-то действий?

Для эксперимента открыл файл вручную и попробовал произвести запись в него советником, информация отобразилась только после повторного открытия.

Если же пытаться наоборот открыть файл вручную уже во время работы с файлом со стороны советника, то тогда файл просто отказывает открываться, ругается что файл занят процессом.

Не совсем понимаю регламент. Не получится так, что в случае тотальной перезаписи удалиться и то что было ещё не прочитано?

Ещё такой нюанс, что к файлу обращаются разные советники и они не в курсе о том, прочитали уже другие советники относящуюся к ним информацию или нет, чтобы можно было очистить файл целиком. 

 
EfremovSergey:

Такой вопрос, связанный с прочтением файла целиком, в случае если один советник в данный момент производит чтение из файла, то другой советник может обратиться к этому же файлу одновременно с первым для произведения своих каких-то действий?

Для эксперимента открыл файл вручную и попробовал произвести запись в него советником, информация отобразилась только после повторного открытия.

Если же пытаться наоборот открыть файл вручную уже во время работы с файлом со стороны советника, то тогда файл просто отказывает открываться, ругается что файл занят процессом.

Не совсем понимаю регламент. Не получится так, что в случае тотальной перезаписи удалиться и то что было ещё не прочитано?

При открытии файла добавьте флаг совместного чтения FILE_SHARE_READ, возможно потребуется и флаг совместного редактирования\записи. Это уже вам решать, надо-ли.

 
Alexey Viktorov:

При открытии файла добавьте флаг совместного чтения FILE_SHARE_READ, возможно потребуется и флаг совместного редактирования\записи. Это уже вам решать, надо-ли.

Ок. Спасибо большое. Полезная информация.

А как удалить только одну строку может кто-нибудь подсказать?

 
EfremovSergey:

Ок. Спасибо большое. Полезная информация.

А как удалить только одну строку может кто-нибудь подсказать?

Смотря какая строка. Я этим не занимался, но если приспичит, то начну с самостоятельных экспериментов. Кому охота экспериментировать чужие идеи? Разве что от безделья. Посмотрите возможно-ли ваш файл прочесть в SQLite базу, там удалить эту строку и записать взад. Если это можно писать в массив или массив структур, то тоже можно сделать. Но есть проблема в том, что массивы и структуры пишутся в .bin файлы которые ничем другим не откроешь и не посмотришь. В общем, полёт фантазии и эксперименты в попытках достичь результата.

 
Alexey Viktorov:

Смотря какая строка. Я этим не занимался, но если приспичит, то начну с самостоятельных экспериментов. Кому охота экспериментировать чужие идеи? Разве что от безделья. Посмотрите возможно-ли ваш файл прочесть в SQLite базу, там удалить эту строку и записать взад. Если это можно писать в массив или массив структур, то тоже можно сделать. Но есть проблема в том, что массивы и структуры пишутся в .bin файлы которые ничем другим не откроешь и не посмотришь. В общем, полёт фантазии и эксперименты в попытках достичь результата.

Обычный текстовый файл... если вы не знаете как это делается, то вопрос отпадает сам собой, каждый как может, на что знаний хватает, так и экспериментирует. Концепция лежит на поверхности что называется и не требует какого-то дополнительного озвучивания.

 
EfremovSergey:

А как удалить только одну строку может кто-нибудь подсказать?

Самый простой путь я указал - прочитать файл, обработать данные, записать обратно. Редактирование данных файла напрямую без лишних вопросов возможно только посимвольно: считали символ - записали на место удаляемой информации. Блоками перезаписывать будет труднее, т. к. могут получиться наложения разных кусков данных. Таким образом, все это сложно и не совсем понятно, зачем нужно. Неужели так мало оперативной памяти? Но тогда и работа большого количества программ будет невозможна.

 
EfremovSergey:

Обычный текстовый файл... если вы не знаете как это делается, то вопрос отпадает сам собой, каждый как может, на что знаний хватает, так и экспериментирует. Концепция лежит на поверхности что называется и не требует какого-то дополнительного озвучивания.

Ну, если вы считаете что информации «Обычный текстовый файл...» достаточно, то вам точно к телепатам. Адрес не знаю, сами найдёте. Вы почему-то не учитываете что даже текстовые файлы бывают разными. Есть-ли символ конца строки, что в файле: числа или текст и ещё могут быть нюансы.

Вам самый простой способ Игорь сразу предложил. Вам не понравились, видимо, тогда я предложил самостоятельно поэкспериментировать. А концепция это только для вас на поверхности………

 
Ihor Herasko:

Самый простой путь я указал - прочитать файл, обработать данные, записать обратно. Редактирование данных файла напрямую без лишних вопросов возможно только посимвольно: считали символ - записали на место удаляемой информации. Блоками перезаписывать будет труднее, т. к. могут получиться наложения разных кусков данных. Таким образом, все это сложно и не совсем понятно, зачем нужно. Неужели так мало оперативной памяти? Но тогда и работа большого количества программ будет невозможна.

Тут вот в чём загвоздка: есть программы - 10 штук, которые пишут в файл и есть другие 10, которые из него читают, не хочется чтобы каждая читающая программа каждый раз обрабатывала весь накопленный массив данных за всё время.

Файлы:
Copy.txt  1 kb