示例#1
0
 // ============================================================
 // <T>执行监视器的逻辑。</T>
 //
 // @return 处理结果
 // ============================================================
 @Override
 public boolean onExecute() {
   // 检查文件集合
   if (_files.isEmpty()) {
     return false;
   }
   // 检查变更的文件
   FFileInfos removes = null;
   int count = _files.count();
   for (int n = 0; n < count; n++) {
     FFileInfo info = _files.value(n);
     if (onFilter(info)) {
       if (info.exists()) {
         if (info.storeTest(_storeInterval)) {
           // 响应存储的文件
           try {
             doFileSave(info);
           } catch (Exception e) {
             _logger.error(e, "File save event error (file={1})", info.fileName());
           }
           info.stored();
         } else if (info.isModified()) {
           // 响应变更的文件
           try {
             doFileChange(info);
           } catch (Exception e) {
             _logger.error(e, "File change event error (file={1})", info.fileName());
           }
           info.refresh();
         }
       } else {
         // 响应被删除的文件
         try {
           doFileRemove(info);
         } catch (Exception e) {
           _logger.error(e, "File remove event error (file={1})", info.fileName());
         }
         if (null == removes) {
           removes = new FFileInfos();
         }
         removes.push(info);
       }
     }
   }
   // 移除文件集合
   if (null != removes) {
     for (FFileInfo info : removes.values()) {
       _files.remove(info.fileName());
     }
   }
   return true;
 }
示例#2
0
 // ============================================================
 // <T>解包处理。</T>
 //
 // @param pack 打包字符串
 // ============================================================
 public void unpack(String pack) {
   if (!RString.isEmpty(pack)) {
     try {
       // 解压数据
       FAttributes map = new FAttributes();
       map.unpack(pack);
       // 获得内容
       _catalog = map.get("catalog", null);
       _date = map.get("date", null);
       _code = map.get("code", null);
       _name = map.get("name", null);
       _origin = map.get("origin", null);
       _mime = map.get("mime", null);
       _size = map.getInt("size");
     } catch (Throwable throwable) {
       _catalog = null;
       _date = null;
       _code = null;
       _name = null;
       _origin = null;
       _mime = null;
       _size = 0;
       _logger.error(this, "unpack", throwable);
     }
   }
 }
示例#3
0
 // ============================================================
 // <T>存储所有变更的文件。</T>
 // ============================================================
 public synchronized void storeAll() {
   // 检查变更的文件
   if (!_files.isEmpty()) {
     int count = _files.count();
     for (int n = 0; n < count; n++) {
       FFileInfo info = _files.value(n);
       if (onFilter(info)) {
         if (info.exists() && info.storeTest(0)) {
           // 响应存储的文件
           try {
             doFileSave(info);
           } catch (Exception e) {
             _logger.error(e, "File save event error (file={1})", info.fileName());
           }
           info.stored();
         }
       }
     }
   }
 }
示例#4
0
 // ============================================================
 // <T>设置网络地址。</T>
 //
 // @param url 网络地址
 // ============================================================
 public void loadFile(String fileName) {
   // 检查文件存在性
   if (!RFile.exists(fileName)) {
     throw new FFatalError("File is not exists. (file_name={1})", fileName);
   }
   // 设置名称
   if (RString.isEmpty(_name)) {
     _name = RFile.name(fileName);
   }
   // 设置扩展
   if (RString.isEmpty(_extension)) {
     _extension = RFile.extension(fileName);
   }
   // 加载文件
   try (FByteFile file = new FByteFile(fileName)) {
     _data = file.toArray();
     _size = _data.length;
   } catch (Exception exception) {
     _logger.error(this, "loadFile", exception);
   }
 }