public static final void save() {
   try {
     Json json = new Json(new DataManage());
     String text = json.toString();
     if (text.hashCode() != hashCode) {
       hashCode = text.hashCode();
       System.out.println("save data");
       FileUtil.save(getFile(), text);
       Messager.send(L.get("Message.data_save") + "    " + new Date().toString());
     }
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
 public static final void export() {
   // 打包规则 , 打包输出默认 本地 assets 文件夹
   // 复制所有类的文件
   // 复制资源的文件夹 , 有 文件夹的 资源复制到 最后一级文件夹目录 , 没有目录的复制到根目录
   Messager.send("Export", MessageKey.H1);
   File asssets = new File("assests");
   FileUtil.delete(asssets); // 清空数据
   asssets.mkdirs();
   Messager.send("clean cache", MessageKey.H2);
   // 打包类对象
   for (ClassPath classPath : classPaths) {
     Messager.send("Saving " + classPath.getClassName(), MessageKey.H1);
     File classFolder = getFolder(classPath);
     classFolder = new File(asssets, classFolder.getName());
     classFolder.mkdirs();
     for (ClassElement element : classPath.getElements()) {
       Messager.send("saving : " + element.getObjId(), MessageKey.H2);
       save(element, classFolder);
     }
   }
   // 打包资源对象
   Messager.send("Saving Images ", MessageKey.H1);
   for (ResoucePath resourcePath : resourcePaths) {
     File file = resourcePath.getFile();
     if (resourcePath.isPSD()) { // 打包 PSD
       Psd psd = PsdCache.get(file);
       List<Layer> layers = new ArrayList<Layer>();
       filterImage(psd, layers);
       final Settings settings = new Settings();
       settings.pot = false;
       settings.maxWidth = 2048;
       settings.maxHeight = 2048;
       TexturePacker packer = new TexturePacker(settings);
       for (Layer layer : layers) {
         packer.addImage(layer.getImage(), layer.getName());
       }
       String imagePath = resourcePath.getAssetsPath().replace(".psd", ".atlas");
       Messager.send("saving image : " + imagePath);
       packer.pack(asssets, imagePath);
     } else { // 拷贝文件
       try {
         File copyTo = new File(asssets, resourcePath.getAssetsPath());
         FileUtil.copy(file, copyTo);
       } catch (Exception e) {
         e.printStackTrace();
       }
     }
   }
 }
 // 保存类文件到 指定文件夹
 public static final void save(ClassElement classElement, File folder) {
   try {
     if (folder.exists() == false) {
       folder.mkdirs();
     }
     File jsonFile = new File(folder, classElement.getObjId());
     jsonFile.createNewFile();
     FileUtil.save(jsonFile, new Json(classElement.getObject()).toString());
     //
     ClassPath classPath = classElement.getParent();
     Messager.send(
         L.get("message.class_element_save")
             + "  "
             + classPath.getClassName()
             + "  "
             + classElement.getObjId()
             + "  "
             + new Date().toString());
   } catch (Exception e) {
     e.printStackTrace();
   }
 }