Почему в галерее показывает 2 одинаковых папок
Перейти к содержимому

Почему в галерее показывает 2 одинаковых папок

  • автор:

Поиск дубликатов фотографий: избавляемся от лишнего

Как проще всего освободить пространство на жестком диске? Удалить дубликаты фотографий и видео! Это точные копии файлов, которые находятся в других папках или на соседних дисках и ничем не отличаются от оригиналов. Согласитесь, избавиться от таких файлов — большое облегчение: сколько полезного пространства появится на диске! И не надо терзаться в сомнениях, что можно удалить, а что ещё пригодится.

Оглавление

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

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

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

Но искать и удалять одинаковые фотографии долго и муторно. Поэтому очень кстати новая опция программы Tonfotos — автоматический поиск и удаление дубликатов фото. Она не только поможет сэкономить ресурсы компьютера, но и сбережет ваши силы и время от поиска одинаковых фотографий вручную.

Youtube video preview image

Как работает функция поиска и удаления дубликатов?

  • В основном меню Tonfotos выберите “Файл”, в выпавшем списке нажмите на “Удалить дубликаты”.
  • Открывшийся диалог покажет статистику по дубликатам в вашем фотоархиве. Вы увидите папки, где они лежат, на какие файлы они похожи, сколько их, какой объем пространства занимают.
  • Некоторые файлы можно удалить без просмотра — в этом случае в окошке будет кнопка “Удалить все”. Алгоритм отсеивает идентичные фотографии, которые расположены в разных источниках, например, в папке, где вы храните архив, и в “Downloads”. В такой ситуации можно удалить фотографии, не заходя в раздел “Дубликаты”, чтобы посмотреть их глазами. Просто выбираете, в какой папке хотите, чтобы они остались, и в соответствующей строке нажимаете «Удалить все»
  • Все варианты можно быстро просмотреть, для этого надо нажать кнопку “В альбом”. Программа перебросит вас в виртуальную папку “Дубликаты”. Там вы увидите пары фотографий и видео, от одного из которых можно избавиться. Если дублей больше, чем пара, они будут отображаться тройками/четверками и так далее.

Диалог удаления дубликатов Tonfotos

Программа заранее считает и демонстрирует вам, сколько пространства освободится, если дубли удалить. Это отображается в таблице. Очень наглядно!

Как программа отсеивает дубликаты?

Важно понимать, что наша программа считает дубликатами файлы, содержимое которых полностью идентичное. У них может отличаться имя или дата, но даже уменьшенную копию, Tonfotos не считает дубликатом. Это уже другой файл для программы.

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

Сегодня Tonfotos позволяет максимально избежать ручной работы. Но даже удаление исключительно полных дублей легко может освободить несколько гигабайт дополнительного пространства на вашем диске.

Кстати, дублей может быть не два, а больше. Если одинаковых фотографий три и более, то полный список повторов и место их расположения можно посмотреть в “Информации о файле”.

Большое количество дубликатов одного изображения

Алгоритм Tonfotos анализирует взаимное расположение фотографий, опираясь на ту информацию, которую вы задали через меню “Расположение архива”. Как он распределяет найденные дубли?

Первое: дубли в разных источниках

Если файлы с одинаковым содержимым расположены в разных источниках, то с вероятностью 99% это будут дубли, которые вам не пригодятся. Так, файл на сетевом диске, где хранится архив, и идентичный файл в папке “Загрузки” на жестком диске компьютера — один и тот же. Просто из “Загрузок” мы его скопировали, но не удалили.

Второе: дубли в одной папке

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

Третье: дубли в одном источнике, но разных папках

А порой мы сортируем файлы на сетевом источнике в разные папки, дублируя их. Допустим, вы сложили фотографии из отпуска в папку «Хорватия_2019» и часть из них сохранили в другой — “Для печати семейного календаря на НГ2020”. Таким образом, в этих директориях лежат одни и те же кадры. Календарь на 20-й год вы уже собрали, напечатали и подарили бабушкам и дедушкам. А дубликаты фотографий так и пылятся в своей отдельной папке.

Кнопки “Удалить все” и “В альбом” — когда, кому, почему?

Для некоторых дублей алгоритм программы предлагает удаление без лишних телодвижений одной кнопкой “Удалить все”. Рядом с ней будет стоять кнопка “В альбом”, то есть при желании вы можете посмотреть, что вы удаляете. В других ситуациях опции “Удалить все” (не глядя) нет. Есть только вариант посмотреть и кнопка “В альбом”. Почему?

Кнопка «Удалить все» будет предложена, если одна и та же фотография лежит на нескольких ресурсах одновременно: сетевом и жёстком диске, например. Алгоритм предложит удалить файлы, не заходя в альбом. Но выбор, в какой папке их оставить, вы делаете самостоятельно. Для этого надо нажать «Удалить все» в соответствующей строке диалоговой таблицы:

  • В одной указано, что фотография с ресурса А имеет дубль на ресурсе Б, откуда ее можно удалить.
  • Во второй — что эта же фотография есть на Б и ее можно удалить на А.

Кнопка “Удалить все” и “В альбом” будет и там, и там. Вам остается сделать выбор — где удалить фотографии, а где оставить.

Так, если файлы лежат в сетевой папке и в папке «Загрузки», то будет 2 строки, которые завершаются кнопками “Удалить все”: в одной — с предложением удалить из сетевой, а другой — с предложением удалить из папки «Загрузки». И этот выбор должен сделать сам пользователь.

При этом вы не можете удалить весь архив по ошибке. Программа этого не допустит. Удалив дубликаты из одного источника, вы не можете нажать “Удалить все” во второй строке. Потому что после того, как программа очистила папку по вашей команде, информация в таблице обновится. И вторая строка пропадет. Ведь фотографии в папке, которая там указана, перестали быть дублями.

Второй случай, когда программа предложит вам «Удалить все»: при обнаружении идентичных по содержанию фотографий на одном ресурсе и в одной папке. Тогда программа способна и удалять, и даже самостоятельно выбрать, какую из фотографий оставить. Конечно, бывает, что алгоритм избавляется от файла с красивым названием “Свидетельство_о_браке” вместо “IMG_20200309_134007.jpg”. Но сам файл точно не пропадет. К тому же у вас всегда есть возможность зайти в альбом и посмотреть глазами, чтобы выбрать тот, который будет не жалко удалить.

Но типична скорее ситуация, когда в одной папке хранятся скопированные файлы с названиями “IMG_20200309_134007-copy.jpg”, “IMG_20200309_134007-copy_1.jpg” и так далее. И от них можно быстро и просто избавиться одной кнопкой.

Программа не предложит «Удалить все», нажав соответствующую кнопку, если внутри сетевого диска есть идентичные по содержанию кадры в разных папках. Диалоговое окно отправит вас посмотреть на них, пройдя в виртуальный альбом (кнопка «В альбом»), и проверить — надо ли вам сохранить все эти файлы или некоторые можно безболезненно убить и приобрести немного дополнительного свободного пространства.

Быстрое и удобное удаление лишних файлов

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

Как найти и удалить дубликаты файлов на устройстве Galaxy

Устройство Galaxy с выбранными файлами и значком файла.

Как анализировать хранилище для поиска и удаления дубликатов файлов

Выделенный значок «Мои файлы». Выделенный значок «Мои файлы».

Шаг 1. Откройте «Мои файлы».

«Мои файлы» с выделенным параметром «Анализ хранилища». «Мои файлы» с выделенным параметром «Анализ хранилища».

Шаг 2. Нажмите на «Анализ хранилища».

Настройки анализа хранилища с выделенными дубликатами файлов. Настройки анализа хранилища с выделенными дубликатами файлов.

Шаг 3. Нажмите на «Дубликаты файлов».

Дубликаты файлов с выделенными файлами и кнопкой «Удалить все». Дубликаты файлов с выделенными файлами и кнопкой «Удалить все».

Шаг 4. Нажмите, чтобы выбрать файлы, и нажмите «Удалить» для удаления.

Примечание. Внимание! Если вы удалите все файлы после выбора, исходные файлы также будут удалены.

Объединение дубликатов фото и видео на iPhone

Приложение «Фото» определяет дубликаты фото и видео в медиатеке в альбоме «Дубликаты». Можно объединить дубликаты фото и видео для экономии места на устройстве и очистки медиатеки.

Экран «Дубликаты», на котором показаны дубликаты фотографий друг рядом с другом. Справа от каждой пары находится кнопка «Объединить», с помощью которой можно объединить дубликаты.

  1. Коснитесь «Альбомы», затем в разделе «Другое» коснитесь «Дубликаты». Дубликаты фото и видео отображаются вместе.
  2. Коснитесь «Объединить», чтобы объединить дубликаты, затем коснитесь «Объединить [количество] объектов». В результате объединения сохраняется самое лучшее качество снимка и данные со всех дубликатов. Полученный объект создается в медиатеке. Остальные дубликаты перемещаются в альбом «Недавно удаленные».

Если у Вас нет дубликатов фото и видео в медиатеке, альбом «Дубликаты» не отображается.

Из 2 папок с одинаковыми файлами выбрать 1 файл

Есть 2 папки, в этих папках файлы с именами: 20200620.txt, файлы приходят с интервалом 1 час в обе папки сразу. Бывают сбои и в 1 из папок файл может не попасть.

 static void Main(string[] args) < FileSystemWatcher mainFolder = new FileSystemWatcher(path: @"C:\Users\Denis\Desktop\Test1", filter: "*.txt") < NotifyFilter = NotifyFilters.FileName >; mainFolder.Created += OnCreateMainFile; mainFolder.EnableRaisingEvents = true; FileSystemWatcher spareFolder = new FileSystemWatcher(path: @"C:\Users\Denis\Desktop\Test2", filter: "*.txt") < NotifyFilter = NotifyFilters.FileName >; spareFolder.Created += OnCreateSpareFile; spareFolder.EnableRaisingEvents = true; > private static void OnCreateSpareFile(object sender, FileSystemEventArgs e) < Console.WriteLine($"File:  in Spare Folder"); > private static void OnCreateMainFile(object sender, FileSystemEventArgs e) < Thread.Sleep(5000); Console.WriteLine($"File:  in Main Folder"); > 

Как мне выбрать из пришедших файлов 1 и с ним работать, а если не пришел во 2 папку файл вообще, тогда работать с 1 файлом?

Отслеживать
задан 12 авг 2020 в 3:52
867 6 6 серебряных знаков 20 20 бронзовых знаков
Имя каждого последующего файла другое или всегда имя одинаковое?
12 авг 2020 в 7:24

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

12 авг 2020 в 10:14
@aepot Имя каждого последующего файла другое.
13 авг 2020 в 1:32
@AlexanderPetrov Приложение MVVM WPF так что не будет собрано, данный код нужен для демонстрации.
13 авг 2020 в 4:28

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Я думаю, решением тут может быть некая задержка перед чтением данных, то есть нечто такое:

private const string firstPath = @"D:\Test\1"; private const string secondPath = @"D:\Test\2"; private static readonly List tempPath = new List(); private static CancellationTokenSource tokenSource; static void Main(string[] args) < var watcher = new FileSystemWatcher(@"D:\Test") < NotifyFilter = NotifyFilters.FileName, EnableRaisingEvents = true, IncludeSubdirectories = true >; watcher.Created += OnCreated; Console.ReadKey(); > private static async void OnCreated(object sender, FileSystemEventArgs e) < tokenSource?.Cancel(); tokenSource = new CancellationTokenSource(); tempPath.Add(e.FullPath); await DelayRead(cancellationToken: tokenSource.Token); >private async static Task DelayRead(int delay = 1000, CancellationToken cancellationToken = default) < try < await Task.Delay(delay, cancellationToken); var file = tempPath.FirstOrDefault(x =>x.Contains(firstPath)) ?? tempPath.FirstOrDefault(x => x.Contains(secondPath)); Console.WriteLine($"Считываем: "); tempPath.Clear(); > catch (TaskCanceledException) < Debug.WriteLine("Задача отменена"); >> 
  • Мы все FileSystemWatcher (кстати, в вашем случае можно обойтись одним, просто указать ему IncludeSubdirectories ) подписываем на одно событие, у меня это OnCreated .
  • В этом событие мы
    • Отменяем (если есть) старое ожидание.
    • Создаем токен отмены для нового ожидания.
    • Добавляем полученный путь нового файла во временный список.
    • Запускаем задачу чтения, которая должна после ожидания прочитать файл.
    • Если токен подал команду на отмену, то задача выдаст TaskCanceledException , который мы обрабатываем как надо и не выполняем дальше логику.
    • В переменную file я забираю по примитивной логике (которую вам наверно надо будет расширить под свои нужды) из той самой временной коллекции путь сначала тот, который соответствует первой директории и если он NULL , то беру 2-ую директорию.
    • Полученный путь вывожу на экран (у вас тут чтение и другая логика).
    • Очищаю временный список.

    В итоге будет работать так:

    • Запускаем ожидание при появление нового файла.
    • Если ожидание все еще идет и появился новый файл, то начинаем его по новой.
    • Если в течении указанного времени не было создано новых файлов, то берем тот, который подходит под нашу логику.

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

    А кстати, если вам без разницы какой файл открывать первым (главное открыть), то можно тогда вовсе обойтись одним обработчиком, где вы делаете простой флаг, некая bool переменная, которая будет говорить начали вы чтение файла или нет и тогда в момент появления нового файла вы просто берете первый пришедший, читаете его, флаг ставите на true (тем самым исключив повторного запуска чтения из файла со 2-й директории) и по окончанию чтения вы флаг возвращаете обратно на false . Ну либо запоминайте имя последнего прочитанного файла. То есть нечто такое (набросал на глаз, не проверял):

    static string lastFile; private static void OnCreated(object sender, FileSystemEventArgs e) < var fileName = Path.GetFileNameWithoutExtension(e.FullPath); if (lastFile != fileName) < lastFile = fileName; Console.WriteLine($"Считываем: "); > > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *