problem in FileObserver

Problems with WiFi, SQLite ,Bluetooth, WiMax, Proxies, etc...

problem in FileObserver

Postby Nemat » Fri Feb 19, 2010 11:35 am

Hi,

I want to listen to the changes occured in file system.I am using
FileObserver.Now the problem I am facing is whenever a file is created
or modified or deleted a lot of events are generated.I dont get any
perfect way to find the change.Here is my code:

Code: Select all
class MyDirObserver extends FileObserver
         {
                 String superPath;
           public  MyDirObserver(String path)
           {
             super(path, ALL_EVENTS);
             this.superPath=path;
           }


           public void onEvent(int event, String path)
           {
                   Log.e("onEvent of Directory", "=== onEvent ===");
                   try{
             _Dump("dir", event, path,superPath);
                   }
                   catch(NullPointerException ex)
                   {
                           Log.e("ERROR","I am getting error");
                   }
           }
         }


         private void _Dump(final String tag, int event, String path,String
superPath)
         {


           Log.d(tag, "=== dump begin ===");
           Log.d(tag, "path=" + path);
           Log.d(tag,"super path="+superPath);
           Log.d(tag, "event list:");
           if ((event & FileObserver.OPEN) != 0)
           {
                             Log.d(tag, "  OPEN");
           }
           if ((event & FileObserver.CLOSE_NOWRITE) != 0)
           {


                                 Log.d(tag, "  CLOSE_NOWRITE");


           }
           if ((event & FileObserver.CLOSE_WRITE) != 0)
           {


                Log.d(tag, "  CLOSE_WRITE");


                        Log.i("NEWFILEOBSERVER","File is Modified");
                 if(path!=null)
                   {
                                                        Log.d("---------FilePath",superPath+path);
                                   }


           }
           if ((event & FileObserver.CREATE) != 0)
           {
                   isCreate=true;
                        Log.i("NEWFILEOBSERVER","File is Created ");
                         if(path!=null)
                           {
                                Log.d("---------FilePath",superPath+path);
                                                           }
                             Log.d(tag, "  CREATE");


           }
           if ((event & FileObserver.DELETE) != 0)
           {
                        Log.i("NEWFILEOBSERVER","File is deleted");
                         if(path!=null)
                           {
                                Log.d("---------FilePath",superPath+path);
                                                           }
                 //  startMyActivity("A new file is deleted thats="+superPath);


                   Log.d(tag, "  DELETE");


           }
           if ((event & FileObserver.DELETE_SELF) != 0)
           {
                   Log.d(tag, "  DELETE_SELF");
           }
           if ((event & FileObserver.ACCESS) != 0)
           {
                   Log.d(tag, "  ACCESS");
           }
           if ((event & FileObserver.MODIFY) != 0)
           {
                   if(!isModified)
                 isModified=true;


                   if(isModified && isOpen)
                           isAgainModified=true;
                   Log.d(tag, "  MODIFY");
           }
           if ((event & FileObserver.MOVED_FROM) != 0)
           {
                   Log.d(tag, "  MOVED_FROM");
                   if(path!=null)
                   {
                                                Log.d("---------FilePath",superPath+path);
                                           }
           }
           if ((event & FileObserver.MOVED_TO) != 0)
           {
                   Log.d(tag, "  MOVED_TO");


                   if(path!=null)
                   {
                                                Log.d("---------FilePath",superPath+path);
                                           }
           }
           if ((event & FileObserver.MOVE_SELF) != 0)
           {
             Log.d(tag, "  MOVE_SELF");
           }
           if ((event & FileObserver.ATTRIB) != 0)
           {
                   Log.d(tag, "  ATTRIB");
           }
           Log.d(tag, "=== dump end ===");



}


and also,it stops after some time.I dont get the exact time but doesnt
work always though I call startWatching() in service.

I hope you guys help me.I tried many ways but it doesnt work
perfectly.Am I doing something wrong???
or there we have some other way to do this.......


Please help me........I have to get this done withing few days......


Any help is appreciated!!!!


Thanks in Advance
Nemat
Nemat
Experienced Developer
Experienced Developer
 
Posts: 62
Joined: Thu Aug 21, 2008 3:16 pm
Location: Jaipur

Top

Return to Networking & Database Problems

Who is online

Users browsing this forum: No registered users and 3 guests