peterxuv Ответов: 1

Vb.net чтение текстовых файлов


Я хочу написать программу для чтения файлов *.txt в определенной папке. Новые файлы *.txt создаются все время. Как я могу написать код для чтения новых файлов и поддержания высокой эффективности работы?
Мне нужно решение. Ваш вклад будет оценен по достоинству!

Что я уже пробовал:

Я понятия не имею. Когда программа запустится раз, весь файл будет прочитан разом. Эффективность до минимума.

A_Griffin

Используйте класс FileSystemWatcher для поиска новых файлов, а затем считывайте (только) их по мере их создания.

1 Ответов

Рейтинг:
6

OriginalGriff

Как предложил A_Griffin, используйте a Класса filesystemwatcher[^] для мониторинга папки.

Кроме того, следите за тем, какие файлы вы уже обработали, и обрабатывайте только те, которых нет в этом списке. (Этот метод работает лучше, чем FileSystemWatcher, если ваше приложение не работает все время). Список может быть помощь в текстовом, JSON, XML или даже БД - зависит от того, что доступно и лучше всего подходит для вас.


peterxuv

- Да! Второе решение должно быть наилучшим. Но я имею отношение к тому, что в то время как handreds тысяч файлов в папке, как я могу сделать приложение, сохраняя высокую эффективность при перезапуске приложения? Если я отслеживаю имена файлов, должно ли приложение снова прочитать все файлы, чтобы проверить, есть ли они в списке? Это пустая трата времени.

OriginalGriff

Это не займет много времени: Windows кэширует содержимое папки, поэтому он может быстро вернуть их - и Linq имеет метод Except, который удалит все те, которые уже есть.

Если вы не читаете все имена, вы не знаете, что там есть! (И нет никакого метода GetFiles, который возвращает только файлы с определенного времени, поэтому вам нужно будет делать это каждый раз, когда вы хотите проверить наличие новых элементов в любом случае, если вы не используете комбинацию списка и FileSystemWatcher)

peterxuv

ОК, я постараюсь его.
Я хотел прочитать время создания файла и записать его в текстовый файл. Но дата и время ПК иногда могут быть неправильными. Так что это кажется не совсем строгим.
@Griff, Спасибо за вашу любезную помощь. ^_^

peterxuv

Спасибо! @Griff