Avatar billede funkyloonie Nybegynder
11. maj 2005 - 14:26 Der er 1 kommentar og
2 løsninger

Klasse til at reagere når fil skrives til disk

Hej

I .net er der en klasse kaldet IO.FileSystemWatcher som raiser et event når der skrives en fil i en angivet folder. Findes der er en klasse i Java som kan gøre det samme?
Avatar billede mikkelbm Nybegynder
11. maj 2005 - 22:11 #1
Nej, der findes ikke mig bekendt en sådan klasse i java. Men det må da kunne laves rimelig smertefrit. Kigger på det.
Avatar billede mikkelbm Nybegynder
11. maj 2005 - 22:34 #2
Følgende er et meget simpelt eksempel på hvordan det kan gøres:

import java.util.*;
import java.io.*;
import java.awt.event.*;

public class NewFileEvent extends Thread
{
    private HashMap filesInDir = new HashMap ();
    private File dir;
   
    public NewFileEvent (File dir)
    {
        this.dir = dir;
    }
   
    public void run ()
    {
        while (true)
        {
            File[] files = dir.listFiles();
           
            // Finder nye filer   
            for (int i = 0; i<files.length; i++)
            {
                if (!filesInDir.containsKey(files[i].getName()))
                {
                    filesInDir.put(files[i].getName(), files[i]);
                    System.out.println ("New file created: " + files[i].getName());
                }
            }
            try { sleep (1000);  }
            catch (Exception ex) { }
           
            // Finder slettede filer
            String[] tempFiles = (String[])filesInDir.keySet().toArray(new String[0]);
            for (int i = 0; i<tempFiles.length; i++)
            {
                boolean exists = false;
                for (int j = 0; j<files.length; j++)
                {                   
                    if (files[j].getName().equals(tempFiles[i]))
                        exists = true;
                }
                if (!exists)
                {
                    System.out.println ("File deleted: " + tempFiles[i]);
                    filesInDir.remove(tempFiles[i]);
                }
              }
        }
    }
   
   
    public static void main (String[] args)
    {
        new NewFileEvent (new File (".")).start();
    }
}


Håber det kan bruges.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester