private void deleteFile() {
        HashMap<String, FileStructure> currFileList = fileUtil.getAllFiles(rootDirAddress, true);
        Iterator iter = currFileList.keySet().iterator();
        while(iter.hasNext()) {
            String currFileName = (String)iter.next();
            // here we have a bug, cannot delete an empty dir!
            if(!serverFileSet.contains(currFileName)
               && prevFileList.containsKey(currFileName)
               // conflict file will not be deleted!
               // if a conflict file is deleted in server side, it would not be deleted in the client side
               && !currFileName.endsWith(DropboxConstants.CONFLICT_MARK)) {               
                String fullPath = rootDirAddress+fileUtil.getDeletedParentRelativePath(currFileName);
                File deletedFile = new File(fullPath);
                if(deletedFile.isDirectory()) {
                    DropboxFileUtil.deleteDirAndSubsidiaries(deletedFile);
                    System.out.println("delete dir and its subsidiaries:"+ fullPath);
                    // get the address of the copy file and delete it
                    /*
                    rootDirAddress
                    File deletedFileCopy = new File(rootDirAddress+DropboxConstants.COPYFILE_DIR_MARK+fileUtil.getDeletedParentRelativePath(currFileName));
                    */
                }
                else {
                    deletedFile.delete();
                    System.out.println("delete file:"+ fullPath);
                }                
                deletedFileSet.add(fileUtil.getDeletedParentRelativePath(currFileName));                
            }
        }

        // So far, the client sides's files hierarchy is almost the same as the server side
        // except some empty dirs remain undeleted. So next we need to delete these empty dirs

    }