フォルダ内のファイルがcopyまたは生成されたかどうかを検出します.

2369 ワード


package common;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class FileCreated {

    public Map<String, Object> TestFileCreated (String dir) {
        
        Map<String, Object> returnMap = new HashMap<String, Object>();
        
        boolean createFlag = false;
        String fileName = null;
        int count = 0;
        File fileDir = new File (dir);
        long currentTime = System.currentTimeMillis();
        long currentTime2 = System.currentTimeMillis();
        System.out.println("    ");
        while (true) {
            boolean breakFlag = false;
            while (System.currentTimeMillis() - currentTime >= 3000) {
                //   
                System.out.println(count);
                String[] returnFile = fileDir.list();
                if (returnFile.length != 0) {
                    File returnCFile = null;
                        returnCFile = new File (returnFile[0]);
                    long fileSize1 = returnCFile.length();
                    long innerCurrentTime = System.currentTimeMillis();
                    while (System.currentTimeMillis() - innerCurrentTime >= 1000) {
                        //   1 
                        innerCurrentTime = System.currentTimeMillis();
                    }
                    returnCFile = new File (returnFile[0]);
                    long fileSize2 = returnCFile.length();
                    
                    if (fileSize2 == fileSize1) {
                        breakFlag = true;
                        break;
                    }
                }
                currentTime = System.currentTimeMillis();
                count++;
            }
            if (breakFlag == true) {
                break;
            }
        }
        
       return null;
    }
    
    public static void main (String [] args) {
        FileCreated fileCreated = new FileCreated();
        fileCreated.TestFileCreated("d:\\filecreate");
        
    }
}