![]() |
Как в файле изменить определённые строки?
Есть файл с большим количеством строк. Нужно найти определённые строки (вхождения фраз) и, при их обнаружении, добавить к началу каждой из них, скажем, символ комментария - ;.
Я знаю как это сделать путём полной перезаписи существующего файла (т.е. загнать инфу из файла в память и все замены провести там, после чего перезаписать существующий файл), но это, имхо, не совсем правильно и память жрёт :) |
NewOLDi,
_FileWriteToLine() посмотрите в библиотечных функциях, которые Цитата:
|
Код:
$sFile = @ScriptDir & '\test.txt'; путь до текстового файла, который подлежит обработке - должен существовать |
kaster и NewOLDi,
У меня через массив вот так работает: Код:
#include <file.au3> |
kaster, у Вас используются два файла, а нужно всё проворачивать в одном, т.е. и читать и записывать (при необходимости) одновременно.
madmasles, массив-память - одно и тоже (в условиях я указал на это), а нужно напрямую, без загона инфы в память. Представьте, что файл размером в 1 Гб :) И это, любить библиотечные функции - не означает все их знать и уметь пользоваться, любовь здесь с точки зрения разумности использования того, что уже давно придумано и просчитано (типа - зачем изобретать велосипед). |
Цитата:
Код:
$aArray = 0 |
Нууу.... нет так нет, бум использовать память и полностью перезаписывать имеющийся файл :)
|
Цитата:
Код:
$sFile = @DesktopDir & "\File.txt" |
Creat0R, нууу - строка не файл, как никак :) Благодарю, вроде как работает.
|
Интересно, сколько таких способов и какой из них наиболее оптимальный и почему.
|
madmasles
Самый быстрый и лёгкий - загнать всю инфу в память и там с ней работать. Но этот вариант не всегда подходит, если речь идёт о слишком больших объёмах данных. Медленный и муторный, но эффективный с точки зрения объёма занимаемой памяти - работа с файлом напрямую. В дополнение, хочется отметить, что первое и второе может быть объеденено для полного конценцуса, т.е. - золотая середина. В память загоняется не вся инфа, а её части по мере необходимости. Так что, исходить нужно из задач, стоящих перед Вами. Отсюда и будет выбираться оптимальный путь... Ну как-то так :) ЗЫ: А извращаться над каждым из вариантов можно сколь угодно много, хотя от перестановки мест слагаемых... ну разве что сокращать код и заниматься оптимизацией. |
NewOLDi, Тема решена?
|
Время: 07:54. |
Время: 07:54.
© OSzone.net 2001-