Сохранение изменений папки на Java ArrayLists

Я пытаюсь это программа, которая следит за изменениями каталога. Программа должна сказать:

  1. Если файл был удален
  2. Если файл был изменен
  3. Если файл новый.

Для этого я использую два ArrayList, в первом ArrayList (initiallist) я сохраняю содержимое FilePath. Затем я делаю паузу. Пользователь может изменить что-то из FilePath, например, вставить новые файлы или удалить другие файлы или изменить. Когда я нажимаю клавишу, я снова сохраняю во втором ArrayList содержимое FilePath.

Тогда я сравниваю предметы и вот проблема. Как я могу это сравнить?

Я использую это:

for(int i=0; i<initiallist.size(); i++){
        for(int j=0; j<finallist.size(); j++){
            int compname = initiallist.get(i).getName().compareTo(finallist.get(j).getName());
            //If name is the same
            if(compname==0){
                //If modify date and length is the same
                if(initiallist.get(i).getLength()==finallist.get(i).getLength() && initiallist.get(i).getDate()==finallist.get(i).getDate()){
                    System.out.println("The file: "+initiallist.get(i).getName()+ " --> wasn't modified." );
                    break;
                }else{
                    System.out.println("The file: "+initiallist.get(i).getName()+ " --> was modified." );
                }
            }else if(compname!=0){

            }else{

            }
        }
    }

Мне нужна помощь, чтобы взять новые файлы и удаленные файлы. СПАСИБО!:)

3 ответа

Решение

Для сравнения объектов в Java используйте метод.equals() вместо оператора "=="

+ Изменить

initiallist.get(i).getDate()==finallist.get(i).getDate()

в

initiallist.get(i).getDate().equals(finallist.get(i).getDate())

Сравнение == работает только с примитивными типами. Для сравнения объектов, таких как объект Date, необходимо использовать equals() или compareTo().

== сравнивает АДРЕС двух объектов, а не фактические ЗНАЧЕНИЯ объектов.

if(date1.equals(date2))
    //do something

ИЛИ ЖЕ

if(date1.compareTo(date2) == 0)
    //do something

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

Мониторинг файловой системы с помощью WatchService

Это избавит вас от лишней работы.

Другие вопросы по тегам