Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить diff изменения файлика? / 18 сообщений из 18, страница 1 из 1
17.06.2014, 17:01
    #38672070
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
Подскажите как решщить такую задачу.

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

То, что файлик изменился умеет показывать WatchServcie(since java 7), но ЧТО конкретно в нём поменялось - я так понимаю ему недоступно.

Что посоветуете для решения этой проблемы?
...
Рейтинг: 0 / 0
17.06.2014, 17:07
    #38672080
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90, решений тут может быть много. Они по большей части выходят за рамки java.
Операционку сменить например. И файловую систему.
...
Рейтинг: 0 / 0
17.06.2014, 17:09
    #38672084
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
Самое простое, запоминать последнюю позицию. В следующий раз показывать всё, что после нее добавилось и запоминать уже новую позицию.
...
Рейтинг: 0 / 0
17.06.2014, 17:10
    #38672085
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
mayton,

Я не понимаю о чем Вы. Хотелось бы больше конкретики.
...
Рейтинг: 0 / 0
17.06.2014, 17:13
    #38672092
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
wadmanСамое простое, запоминать последнюю позицию. В следующий раз показывать всё, что после нее добавилось и запоминать уже новую позицию.

в этом случае мы сами должны опрашивать файловую систему. Можем ли мы как-то подписать на событие изменения?
...
Рейтинг: 0 / 0
17.06.2014, 17:14
    #38672095
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
wadman,

хотя вкупе с watcService это звучит логично
...
Рейтинг: 0 / 0
17.06.2014, 17:15
    #38672098
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90в этом случае мы сами должны опрашивать файловую систему. Можем ли мы как-то подписать на событие изменения?
На сколько я понимаю WatchService тоже сам по себе события не присылает. А что мешает использовать WatchService и запоминать размер файла?
...
Рейтинг: 0 / 0
17.06.2014, 17:54
    #38672161
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90,
Ну, если по диагонали посмотреть javadoc api, то сделать класс AddChecker, и еще один ... implements WatchEvent<AddChecker>, и возможно еще добавить ~Event.kind, зарегистрировать в WatchService и т.д., только вот все-равно придется руками делать логику (тот же курсор). Разница только в том, что у вас основной цикл программы упрощается немного. Хотя модно. Если файл не один, то, может и стоит.
...
Рейтинг: 0 / 0
17.06.2014, 17:55
    #38672166
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90mayton,

Я не понимаю о чем Вы. Хотелось бы больше конкретики.
Ты хочешь мониторить изменения в одном файле? Или во многих?
Если во многих то их количество как измеряется сотни? Миллионы?
...
Рейтинг: 0 / 0
17.06.2014, 18:25
    #38672204
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
maytonТы хочешь мониторить изменения в одном файле? Или во многих?
Если во многих то их количество как измеряется сотни? Миллионы?
изменения в файлах, располагающихся в папке.
Количество - до сотни
...
Рейтинг: 0 / 0
17.06.2014, 19:12
    #38672293
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
Сохранять во временной папки (или другом хранилище)
Сравнивать с сохраненным старым содержимым

IMHO & AFAIK
...
Рейтинг: 0 / 0
17.06.2014, 19:13
    #38672296
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
Blazkowicz,

BlazkowiczНа сколько я понимаю WatchService тоже сам по себе события не присылает. А что мешает использовать WatchService и запоминать размер файла?

http://bigdatanerd.wordpress.com/2011/09/20/java-7-feature-java-watchservice-hello-world/
ну да, вечный цикл как-то не камильфо, но что делать.


а как по размеру понять насколько каретку сдвинуть?
...
Рейтинг: 0 / 0
17.06.2014, 19:16
    #38672301
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
Leonid KudryavtsevСохранять во временной папки (или другом хранилище)
Сравнивать с сохраненным старым содержимым

IMHO & AFAIK

Это ведь очень долго.После каждого добавления сравнивать два файла до момента когда один закончится.
...
Рейтинг: 0 / 0
17.06.2014, 20:49
    #38672357
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
man tail

example:

tail -f /var/log/syslog
...
Рейтинг: 0 / 0
17.06.2014, 21:29
    #38672377
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90Что посоветуете для решения этой проблемы? Commons IO .
Для ситуации "данные только добавляются" - достаточно запомнить прежний размер файла и (тем или иным способом) начинать читать после запомненой позиции.
...
Рейтинг: 0 / 0
18.06.2014, 09:16
    #38672547
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
redwhite90Leonid KudryavtsevСохранять во временной папки (или другом хранилище)
Сравнивать с сохраненным старым содержимым

IMHO & AFAIK

Это ведь очень долго.После каждого добавления сравнивать два файла до момента когда один закончится.
По сути тебе нужен слегка изменённый rsync который перед синхронизацией вызадавал-бы тебе
difference. А оптимизации дискового трафика при сравнении в rsync были заложены изначально и
базируются на контрольных суммах.
...
Рейтинг: 0 / 0
18.06.2014, 22:32
    #38673657
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
maytonredwhite90пропущено...


Это ведь очень долго.После каждого добавления сравнивать два файла до момента когда один закончится.
По сути тебе нужен слегка изменённый rsync который перед синхронизацией вызадавал-бы тебе
difference. А оптимизации дискового трафика при сравнении в rsync были заложены изначально и
базируются на контрольных суммах.

rsync самому написать это сильно.

P.S. я побаиваюсь линукса.
...
Рейтинг: 0 / 0
19.06.2014, 12:17
    #38674112
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить diff изменения файлика?
кажется всё написано до нас:
https://code.google.com/p/java-diff-utils/
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как получить diff изменения файлика? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]