0

私は、安定版を使用してファイルの読み出しの変更を監視するサービスを作成していますRecursiveFileObserver。このファイル オブザーバーは、ファイル Modifications ( FileObserver.MODIFY)を監視するように割り当てられonEventます。変更されます..したがって、サイクルは次のとおりです。

サービスが開始し、オブザーバーがWatchingを開始します->ファイルはXによって変更されます->私のオブザーバーは、これをXによって変更される前の状態に変更します...

したがって、必要なのは、 X によって変更される前のファイルの値を読み取る方法だけです。

それで、誰でもこれで私を助けることができますか、それは可能ですか?

これは私がやろうとしていることのスニペットです...

    @Override
    public void onEvent(int event, String path) {
        // TODO Auto-generated method stub
        super.onEvent(event, path);

        if(event != MODIFY){
            return;
        }

        if (CoresManagement.isAccessAllowed()){ //If the access is allowed , doesn't do anything ...        
            return;
        }

        //Here is where I want to do what I said above

            if (path == "le Wild Location"){
              modifyFile("le Wild Location" , "Here is the value I want to know , the old value " );
            }

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

0

FileObserver を実装するためにできること

fileObserver = 新しい FileObserver(pathOfFile) {

 @Override
 public void onEvent(int event, String file) {
    // on any change in the file you can replace the old file. 
    //basically keep the backup file some where or in the buffer and replace with this file if there is any change. 
 }
 };
 fileObserver.startWatching(); 

ファイルを置き換えます。

FileChannel origFile = null;
FileChannel modFile = null;
long cnt = 0;
long size = 0;

try {
    origFile = new FileInputStream(sourceFile).getChannel();
    modFile = new FileOutputStream(destFile).getChannel();

    size = origFile.size();              
    while((cnt += modFile.transferFrom(origFile, cnt, size-cnt))<size);
}
finally {
    if(origFile != null) {
        origFile.close();
    }
    if(modFile != null) {
        modFile.close();
    }
}
于 2013-06-25T11:44:48.823 に答える