Мониторинг файлов | Не обновляется в jsp во время прослушивания

Я отслеживаю создание и изменение файла в каталоге с помощью jar commons-io. Я могу получить результаты в консоли Eclipse.

final long pollingInterval = 5 * 1000;
     String FOLDER = "C:/test";
    File folder = new File(FOLDER);
    folder.setReadable(true);
    if (!folder.exists()) {
        // Test to see if monitored folder exists
        throw new RuntimeException("Directory not found: " + FOLDER);
    }

    FileAlterationObserver observer = new FileAlterationObserver(folder);
    FileAlterationMonitor monitor =
            new FileAlterationMonitor(pollingInterval);


    FileAlterationListener listener = new FileAlterationListenerAdaptor() {
        // Is triggered when a file is created in the monitored folder

        @Override
        public void onFileCreate(File file) {
            try {
                // "file" is the reference to the newly created file
                System.out.println("File created: "
                        + file.getCanonicalPath());
                getNewMethod(file);// here in this method i am not able to return since its void.

            } catch (IOException e) {
                e.printStackTrace(System.err);
            }

        }
        @Override
        public void onFileChange(File file) {
            try {

                System.out.println("File modified: "
                        + file.getCanonicalPath());
                getNewMethod(file); // here in this method i am not able to return since its void.
            } catch (IOException e) {
                e.printStackTrace(System.err);
            }

        }

    };
    observer.addListener(listener);
    monitor.addObserver(observer);
    monitor.start();

Проблема в том, что я не могу вернуть имя файла, когда он вызывает методы onFileCreate и onFileChange. Как этого добиться? А также я пытаюсь вызвать один метод внутри onFileCreate и onFileChange, который возвращает список. Как вернуть список? Потому что в этом слушателе я не вижу возвращаемого параметра, кроме void.

//Вызов нового метода

public String getNewMethod(File newfile) throws IOException{

    System.out.println("getList method called : "+newfile.getCanonicalPath());
     return "redirect:finalPage"; // here the redirection is not happening

}

Когда я вижу, что запускается событие изменения/создания файла, мне нужно, чтобы изменения были обновлены в jsp. Как этого добиться?


person user1898711    schedule 09.12.2014    source источник


Ответы (2)


Вы можете создать объект File перед тем, как создать прослушиватель и установить файл в методе onFileCreate(). Вы также можете вызывать методы внутри методов анонимного класса, используя OuterClass.this.OuterClassMethod().

File file;
FileAlterationListener listener = new FileAlterationListenerAdaptor() {
        // Is triggered when a file is created in the monitored folder

        @Override
        public void onFileCreate(File file) {
            try {
                // "file" is the reference to the newly created file
this.file = file;                
System.out.println("File created: "
                        + file.getCanonicalPath());
OuterClassName.this.newMethod();

            } catch (IOException e) {
                e.printStackTrace(System.err);
            }

        }
        @Override
        public void onFileChange(File file) {
            try {

                System.out.println("File modified: "
                        + file.getCanonicalPath());
            } catch (IOException e) {
                e.printStackTrace(System.err);
            }

        }

    };
public list newMethod(){
// returns list here
List list = new ArrayList();
return list;
}

Примечание. Замените OuterClassName фактическим именем внешнего класса.

person janasainik    schedule 09.12.2014
comment
Спасибо за ваш ответ. Вызов метода здесь не проблема. Когда я получаю событие изменения файла, мне нужно вернуть изменения в контроллер Spring. Он не возвращается. Когда я перезагружаю страницу, она возвращается. Что я могу сделать для этого?? - person user1898711; 09.12.2014

person    schedule
comment
привет..@user1898711, посмотри внимательно. Это там :) - person Vishal Zanzrukia; 10.12.2014