Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2021875
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: Java

2009-03-13 17:12:45

1, Use class FileObserver to implement this feature

   // Public Constructors 
   public FileObserver(String path); 
   public FileObserver(String path, int mask); 
    
   // Public Methods 
   public abstract void onEvent(int event, String path); 
   public void startWatching(); 
   public void stopWatching(); 

2, Sample
public void onCreate(Bundle savedInstanceState)  
{  
   ...  
   m_myDirObsv.startWatching();  
   m_myFileObsv.startWatching();  
}  
       
public void onDestroy() 

   m_myDirObsv.stopWatching(); 
   m_myFileObsv.stopWatching(); 
   super.onDestroy(); 

  
 private MyDirObserver m_myDirObsv = new MyDirObserver(); 
 private MyFileObserver m_myFileObsv = new MyFileObserver(); 
  
 class MyDirObserver extends FileObserver 
 { 
   public  MyDirObserver() 
   { 
     super("/sdcard/sam/", ALL_EVENTS); 
   } 
      
   public void onEvent(int event, String path) 
   { 
     _Dump("dir", event, path); 
   } 
 } 
  
 class MyFileObserver extends FileObserver 
 { 
   public MyFileObserver() 
   { 
     super("/sdcard/sam/test.txt", ALL_EVENTS); 
   } 
      
   public void onEvent(int event, String path) 
   { 
     _Dump("file", event, path); 
   } 
 } 
  
 private void _Dump(String tag, int event, String path) 
 { 
   Log.d(tag, "=== dump begin ==="); 
   Log.d(tag, "path=" + path); 
   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"); 
   if ((event & FileObserver.CREATE) != 0)  
     Log.d(tag, "  CREATE"); 
   if ((event & FileObserver.DELETE) != 0)  
     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)  
     Log.d(tag, "  MODIFY"); 
   if ((event & FileObserver.MOVED_FROM) != 0)  
     Log.d(tag, "  MOVED_FROM"); 
   if ((event & FileObserver.MOVED_TO) != 0)  
     Log.d(tag, "  MOVED_TO"); 
   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 ==="); 


3, WARNING: Please don't access file under busybox shell, otherwise, the observer is not triggered normally

From: http://ysl-paradise.blogspot.com/2009/02/fileobserver.html
 
阅读(1916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~