diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71ab16b..19c6de3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,7 +18,14 @@
------
```
+------
+# 目录
+* [V 1.0.3]()
+* [V 1.0.2]()
+* [V 1.0.1]()
+* [V 1.0.0]()
+------
## [V 1.0.3] - 2023.4.25
### CreeperModule
- 🎈新增: 新增 `LoadTaskManager` 任务管理器(类),对用户开放的顶层api,用户需要的所有操作都通过此管理器
@@ -31,13 +38,23 @@
- 🎈新增: 新增 `LoadTask_R_Douyu` 斗鱼录播下载任务(类)
- 🎈新增: 新增 `Process_R_Douyu` 斗鱼录播处理器(类)
- 🎈新增: 新增 `AbstractProcessor` 处理器抽象类(类)
+- 🎈新增: 新增 `ConstPool` BARRAGE_ROOT常量
+- 🎈新增: 新增 `BarrageSaveFile` 弹幕存储文件,负责存储当天直播弹幕
+- 🧹重构: 重构 `PipelineWriteJson` 弹幕缓存 与 弹幕文件缓存建立联系
+ HelloWorld:
+
### FileModule
-- ❌移除: 新增 `FileCache的oldJsonFile变量`,不在用map来进行版本更替判断,取而代之的是判断写入字节是否为0的高效率方法
-- 🎈新增: 新增 `FileCache` 方法 `get,writekeys,append` 更加方便的缓存获取,更加方便的写入与内容追加
- 🧪测试: 测试 `FileCache` 方法 `get,writekeys,append`,功能正常,可以使用
-HelloWorld:
-
+- ❌移除: 移除 `FileCache-oldJsonFile变量`,不在用map来进行版本更替判断,取而代之的是判断写入字节是否为0的高效率方法
+- 🎈新增: 新增 `FileCache` 方法 `get,writekeys,append` 更加方便的缓存获取,更加方便的写入与内容追加
+- 🎈新增: 新增 `FileCacheManagerInstance` 将整个FileCacheManager转变为全局单例,防止重复使用调用
+- 🎈新增: 新增 `GlobalFileCache` 全局文件缓存,也负责为`FileCacheManagerInstance`提供初始化的文件缓存队列
+- 🎈新增: 新增 `FileCacheManager` 新增方法 `addFileCache` 负责在之后动态的添加新的文件缓存
+- 🐞Bug: **#00001** `FileCache append()` 在进行数组追加时产生溢出
+- ⛏修复: 修复 **#00001**, 在进行数组追加时不会再溢出
+
+
------
diff --git a/CreeperModule/src/main/java/org/example/constpool/ConstPool.java b/CreeperModule/src/main/java/org/example/constpool/ConstPool.java
index 7b0d93a..509e8ce 100644
--- a/CreeperModule/src/main/java/org/example/constpool/ConstPool.java
+++ b/CreeperModule/src/main/java/org/example/constpool/ConstPool.java
@@ -7,6 +7,12 @@ package org.example.constpool;
*/
public class ConstPool {
+ /**
+ * 文件路径
+ */
+ //弹幕保存文件的根目录
+ public static final String BARRAGE_ROOT = (String)GlobalFileCache.ModuleSrcConfigFile.get("barrage","src");
+
/**
* 下载的方式
*/
diff --git a/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java b/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java
index b967f6c..e2fa01b 100644
--- a/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java
+++ b/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java
@@ -1,6 +1,10 @@
package org.example.core.pipeline;
+import org.example.cache.FileCache;
+import org.example.cache.FileCacheManagerInstance;
+import org.example.exception.FileCacheException;
import org.example.pojo.Barrage;
+import org.example.pojo.configfile.BarrageSaveFile;
import org.example.pojo.download.LoadConfig;
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
@@ -19,45 +23,47 @@ import java.util.concurrent.ConcurrentLinkedQueue;
*/
public class PipelineWriteJson implements Pipeline {
- // Barrage缓存
- private final ConcurrentLinkedQueue cache;
+ private FileCache filecache;
+ private final ConcurrentLinkedQueue cache;
+ LoadConfig loadConfig;
- LoadConfig loadConfig;
+ private BarrageSaveFile barrageSaveFile;
- public PipelineWriteJson(LoadConfig loadConfig) {
- this.loadConfig = loadConfig;
- this.cache = new ConcurrentLinkedQueue<>();
- }
-
- @Override
- public void process(ResultItems resultItems, Task task) {
- List barrageList = resultItems.get("barrageList");
- if (barrageList != null) {
- cache.addAll(barrageList);
+ public PipelineWriteJson(LoadConfig loadConfig) throws FileCacheException {
+ this.loadConfig = loadConfig;
+ this.cache = new ConcurrentLinkedQueue<>();
+ this.barrageSaveFile = new BarrageSaveFile(loadConfig,cache);
+ this.filecache = new FileCache(barrageSaveFile);
+ FileCacheManagerInstance.getInstance().addFileCache(filecache);
}
- }
- public int getCacheSize() {
- return cache.size();
- }
+ @Override
+ public void process(ResultItems resultItems, Task task) {
+ List barrageList = resultItems.get("barrageList");
+ if (barrageList != null) {
+ cache.addAll(barrageList);
+ }
+ }
- // 将缓存写入到别处并且清空缓存
- public int writeDataToFileAndFlushCache(String key) {
- int successCount = 0;
+ public int getCacheSize() {
+ return cache.size();
+ }
- String filePath = "F:\\" + key + ".txt";
+ // 将缓存写入到别处并且清空缓存
+ public int writeDataToFileAndFlushCache(String key) {
+ int successCount = 0;
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true))) {
Barrage barrage;
while ((barrage = cache.poll()) != null) {
- writer.write(barrage.toString());
- writer.newLine();
+ try {
+ filecache.append(barrage,"-1");
+ } catch (InterruptedException |FileCacheException e) {
+ throw new RuntimeException(e);
+ }
successCount++;
}
- } catch (IOException e) {
- e.printStackTrace();
+
+ return successCount;
}
- return successCount;
- }
}
diff --git a/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java b/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java
new file mode 100644
index 0000000..826b6e0
--- /dev/null
+++ b/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java
@@ -0,0 +1,69 @@
+package org.example.pojo.configfile;
+
+import org.example.common.ConfigFile;
+import org.example.constpool.GlobalFileCache;
+import org.example.exception.FileCacheException;
+import org.example.pojo.Barrage;
+import org.example.pojo.download.LoadConfig;
+import org.example.util.FileUtil;
+import org.example.util.JsonFileUtil;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import static org.example.constpool.ConstPool.BARRAGE_ROOT;
+
+/**
+ * @author Genius
+ * @date 2023/04/25 22:08
+ **/
+
+/**
+ * 弹幕保存文件配置类,通过LoadConfig获取主播信息,平台信息,弹幕爬取时间,生成弹幕文件
+ */
+public class BarrageSaveFile extends ConfigFile> {
+ private LoadConfig loadConfig;
+ public BarrageSaveFile(LoadConfig loadConfig,ConcurrentLinkedQueue data) throws FileCacheException {
+ super();
+ this.loadConfig = loadConfig;
+ if (!init(data)) {
+ throw new FileCacheException("File init Error");
+ }
+ }
+
+ /**
+ * 自动生成主播弹幕文件夹以及当天直播弹幕数据文本
+ * @param data
+ * @return
+ */
+ private boolean init(ConcurrentLinkedQueue data) {
+ String fileName = this.filaName();
+ setFileName(fileName);
+ String rootPath = Paths.get( BARRAGE_ROOT,loadConfig.getAnchorName()).toString(); //获取当前主播的文件夹路径
+ setFilePath(rootPath);
+
+ //TODO 待移除 建立主播文件夹
+ try {
+ Files.createFile(Path.of(rootPath));
+ } catch (IOException e) {
+ return false;
+ }
+
+ setData(data);
+ if (!FileUtil.isFileExist(Paths.get(rootPath,fileName).toString())) {
+
+ return !(JsonFileUtil.writeJsonFile(rootPath,fileName,this.packageConfig())==null);
+ }
+ return true;
+ }
+
+ private String filaName(){
+ String format = "%s_%s_%s.json";
+ return String.format(format,loadConfig.getPlatform(),loadConfig.getAnchorName(),loadConfig.getStartTime());
+ }
+
+}
diff --git a/FileModule/src/main/java/org/example/cache/FileCache.java b/FileModule/src/main/java/org/example/cache/FileCache.java
index 7c20007..176d5ce 100644
--- a/FileModule/src/main/java/org/example/cache/FileCache.java
+++ b/FileModule/src/main/java/org/example/cache/FileCache.java
@@ -31,7 +31,7 @@ public class FileCache {
private ConcurrentHashMap jsonFile; //文件内容缓存
- private static final int MAX_WRITE_BUFFER_LIMIT = 4096; //最大写入缓存上线
+ private static int MAX_WRITE_BUFFER_LIMIT = 4096; //最大写入缓存上线
private AtomicInteger writeByte; //当前写入的字节数
@@ -46,7 +46,15 @@ public class FileCache {
init(configFile,10);
}
- public FileCache(T configFile,long autoSyncTime)throws FileCacheException {
+ /**
+ * 构造方法
+ * @param configFile 指定的配置文件
+ * @param autoSyncTime 自动刷新时间
+ * @param maxWriteBufferLimit 写入上限
+ * @throws FileCacheException
+ */
+ public FileCache(T configFile,long autoSyncTime,int maxWriteBufferLimit)throws FileCacheException {
+ MAX_WRITE_BUFFER_LIMIT = maxWriteBufferLimit;
init(configFile,autoSyncTime);
}
@@ -143,7 +151,7 @@ public class FileCache {
//元素添加
int index = Integer.parseInt(keys[keys.length-1]);
if(index==-1){
- ((JSONArray) temp).add(index,value);
+ ((JSONArray) temp).add(value);
}else{
String oldValue = ((JSONArray) temp).get(index).toString();
value = isAppend?oldValue+value.toString():value;
@@ -211,7 +219,6 @@ public class FileCache {
return jsonFile.get(key);
}
-
/**
* 清除已写入的字节数记录
*/
@@ -285,4 +292,20 @@ public class FileCache {
}
}
+ @Override
+ public int hashCode() {
+ return Objects.hash(configFile);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if(obj instanceof FileCache){
+ if(((FileCache) obj).getFileName().equals(this.getFileName())){
+ return true;
+ }else if(obj.hashCode() == this.hashCode()){
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/FileModule/src/main/java/org/example/cache/FileCacheManager.java b/FileModule/src/main/java/org/example/cache/FileCacheManager.java
index 641205a..8f91fca 100644
--- a/FileModule/src/main/java/org/example/cache/FileCacheManager.java
+++ b/FileModule/src/main/java/org/example/cache/FileCacheManager.java
@@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
@@ -27,14 +28,16 @@ public class FileCacheManager {
private Logger logger = LoggerFactory.getLogger(FileCacheManager.class);
private final List fileCaches;
- private long sleepTime; //睡眠时间
+ private AtomicLong sleepTime; //睡眠时间
private ExecutorService watchPool; //巡逻线程
private ExecutorService autoSyncer; //生产者线程
- public FileCacheManager(List fileCaches){
- this.fileCaches = fileCaches;
+ private volatile Watcher watcher;
+
+ protected FileCacheManager(List fileCaches){
+ this.fileCaches = new CopyOnWriteArrayList<>(fileCaches);
initSleepTime();
this.watchPool = Executors.newSingleThreadExecutor();
this.autoSyncer = Executors.newFixedThreadPool(fileCaches.size());
@@ -48,11 +51,28 @@ public class FileCacheManager {
fileCaches.forEach(item->{
minSleepTime.set(Long.min(minSleepTime.get(), item.getSyncTime()));
});
- this.sleepTime = minSleepTime.get();
+ this.sleepTime = minSleepTime;
}
public void start(){
- this.watchPool.submit(new Watcher());
+ if(!fileCaches.isEmpty()){
+ if(watcher==null){
+ synchronized (FileCacheManager.class){
+ if(watcher==null){
+ watcher = new Watcher();
+ this.watchPool.submit(watcher);
+ }
+ }
+ }
+ }
+ }
+
+ public boolean addFileCache(FileCache fileCache){
+ if (this.fileCaches.indexOf(fileCache)==-1) {
+ fileCaches.add(fileCache);
+ initSleepTime();
+ }
+ return false;
}
class Watcher implements Runnable{
@@ -71,9 +91,9 @@ public class FileCacheManager {
}
}
now -= TimeUtil.getCurrentSecond();
- if(now fileCaches = GlobalFileCache.fileCaches;
+ private static volatile FileCacheManager Instance;
+
+ public static FileCacheManager getInstance(){
+ if(Instance==null){
+ synchronized (FileCacheManagerInstance.class){
+ if(Instance==null){
+ Instance = new FileCacheManager(fileCaches);
+ }
+ }
+ }
+ return Instance;
+ }
+}
diff --git a/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java b/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java
new file mode 100644
index 0000000..97e3cd2
--- /dev/null
+++ b/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java
@@ -0,0 +1,31 @@
+package org.example.constpool;
+
+import org.example.cache.FileCache;
+import org.example.exception.FileCacheException;
+import org.example.pojo.configfile.ModuleSrcConfigFile;
+
+import java.util.List;
+
+/**
+ * @author Genius
+ * @date 2023/04/25 23:03
+ **/
+
+/**
+ * 全局文件缓存池,用于存放全局文件缓存,便于跨模块调用
+ */
+public class GlobalFileCache {
+
+ public static FileCache ModuleSrcConfigFile;
+
+ static {
+ try {
+ ModuleSrcConfigFile = new FileCache(new ModuleSrcConfigFile());
+ } catch (FileCacheException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static List fileCaches
+ = List.of(ModuleSrcConfigFile);
+}
diff --git a/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java b/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java
index acb5ece..eedc307 100644
--- a/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java
+++ b/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java
@@ -1,6 +1,6 @@
package org.example.init;
-import org.example.bean.ModuleSrcConfigFile;
+import org.example.pojo.configfile.ModuleSrcConfigFile;
import org.example.util.FileUtil;
import org.example.util.JsonFileUtil;
import org.slf4j.Logger;
diff --git a/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java b/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java
new file mode 100644
index 0000000..54a633c
--- /dev/null
+++ b/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java
@@ -0,0 +1,14 @@
+package org.example.pojo;
+
+import org.example.common.ConfigFile;
+
+/**
+ * @author Genius
+ * @date 2023/04/26 00:12
+ **/
+public class CommonConfigFile extends ConfigFile {
+
+ public CommonConfigFile(String filePath, String fileName, Object data) {
+ super(filePath, fileName, data);
+ }
+}
diff --git a/FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java b/FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java
similarity index 97%
rename from FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java
rename to FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java
index 35cac06..650d2bb 100644
--- a/FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java
+++ b/FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java
@@ -1,4 +1,4 @@
-package org.example.bean;
+package org.example.pojo.configfile;
import org.example.common.ConfigFile;
import org.example.constpool.ConstPool;
diff --git a/FileModule/src/main/resources/test.json b/FileModule/src/main/resources/test.json
index 2378b53..221426b 100644
--- a/FileModule/src/main/resources/test.json
+++ b/FileModule/src/main/resources/test.json
@@ -1,10 +1,65 @@
{
- "name": "ChopperBot",
- "description": "A bot for the ChopperMC server",
- "version": "1.0.0",
- "module": {
- "type": ["Account","Creeper","File","Hot","Publish","Section","SectionWork","VideoSection"],
- "main": "console",
- "ui": "console-ui"
- }
-}
+ "data":[
+ {
+ "age":0,
+ "major":"major0",
+ "name":"0",
+ "school":"jsu0"
+ },
+ {
+ "age":1,
+ "major":"major1",
+ "name":"1",
+ "school":"jsu1"
+ },
+ {
+ "age":2,
+ "major":"major2",
+ "name":"2",
+ "school":"jsu2"
+ },
+ {
+ "age":3,
+ "major":"major3",
+ "name":"3",
+ "school":"jsu3"
+ },
+ {
+ "age":4,
+ "major":"major4",
+ "name":"4",
+ "school":"jsu4"
+ },
+ {
+ "age":5,
+ "major":"major5",
+ "name":"5",
+ "school":"jsu5"
+ },
+ {
+ "age":6,
+ "major":"major6",
+ "name":"6",
+ "school":"jsu6"
+ },
+ {
+ "age":7,
+ "major":"major7",
+ "name":"7",
+ "school":"jsu7"
+ },
+ {
+ "age":8,
+ "major":"major8",
+ "name":"8",
+ "school":"jsu8"
+ },
+ {
+ "age":9,
+ "major":"major9",
+ "name":"9",
+ "school":"jsu9"
+ }
+ ],
+ "updateTime":"2023-04-26 00:24:47"
+}
\ No newline at end of file
diff --git a/FileModule/src/test/java/org/example/cache/FileCacheTest.java b/FileModule/src/test/java/org/example/cache/FileCacheTest.java
index 5f073f4..c49f331 100644
--- a/FileModule/src/test/java/org/example/cache/FileCacheTest.java
+++ b/FileModule/src/test/java/org/example/cache/FileCacheTest.java
@@ -1,19 +1,16 @@
package org.example.cache;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.JSONPObject;
-import org.example.bean.ModuleSrcConfigFile;
-import org.example.bean.Student;
-import org.example.cache.FileCache;
+import org.example.common.ConfigFile;
+import org.example.constpool.GlobalFileCache;
+import org.example.pojo.CommonConfigFile;
+import org.example.pojo.Student;
+import org.example.pojo.configfile.ModuleSrcConfigFile;
import org.example.exception.FileCacheException;
import org.junit.jupiter.api.Test;
+import java.io.File;
import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.apache.logging.log4j.message.MapMessage.MapFormat.JSON;
+import java.util.concurrent.ConcurrentLinkedQueue;
/**
* @author Genius
@@ -21,6 +18,23 @@ import static org.apache.logging.log4j.message.MapMessage.MapFormat.JSON;
**/
public class FileCacheTest {
+ static FileCache cache;
+
+ static{
+
+ try {
+ cache = new FileCache<>(
+ new CommonConfigFile(
+ "E:\\Project\\ChopperBot\\FileModule\\src\\main\\resources\\",
+ "test.json",
+ new ConcurrentLinkedQueue()
+ )
+ );
+ FileCacheManagerInstance.getInstance().addFileCache(cache);
+ } catch (FileCacheException e) {
+ throw new RuntimeException(e);
+ }
+ }
@Test
public void TestFileCache() throws FileCacheException, InterruptedException {
@@ -55,55 +69,59 @@ public class FileCacheTest {
@Test
public void TestAppend() throws FileCacheException, InterruptedException {
- ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile();
- FileCache fileCache = new FileCache(moduleSrcConfigFile);
-
- FileCacheManager manager = new FileCacheManager(List.of(fileCache));
- manager.start();
+ FileCacheManagerInstance.getInstance().start();
//追加数组的某个元素
for(int i=0;i<10;i++){
- fileCache.append(i,"sectionwork","src","0");
+ GlobalFileCache.ModuleSrcConfigFile.append(i,"sectionwork","src","0");
}
//追加数组
for(int i=0;i<10;i++){
- fileCache.append(i,"sectionwork","src","-1");
+ GlobalFileCache.ModuleSrcConfigFile.append(i,"sectionwork","src","-1");
}
//追加类中的元素
for(int i=0;i<10;i++){
- fileCache.append(i,"barrage","src");
+ GlobalFileCache.ModuleSrcConfigFile.append(i,"barrage","src");
}
Thread.sleep(500000);
}
@Test
public void TestWrite() throws FileCacheException,InterruptedException{
- ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile();
- FileCache fileCache = new FileCache(moduleSrcConfigFile);
-
- FileCacheManager manager = new FileCacheManager(List.of(fileCache));
- manager.start();
+ FileCacheManagerInstance.getInstance().start();
//更改数组元素
for(int i=0;i<10;i++){
- fileCache.writeKeys(i,"sectionwork","src","0");
+ GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"sectionwork","src","0");
}
//追加数组
for(int i=0;i<10;i++){
- fileCache.writeKeys(i,"sectionwork","src","-1");
+ GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"sectionwork","src","-1");
}
//更改类中的元素
for(int i=0;i<10;i++){
- fileCache.writeKeys(i,"barrage","src");
+ GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"barrage","src");
}
Thread.sleep(500000);
}
@Test
- public void TestJson(){
- Student student = new Student("Genius",18,"qinghua","SC",List.of("1","2","3"),null);
- String s = JSONObject.toJSONString("");
- JSONObject jsonObject = JSONObject.parseObject(s);
- jsonObject.put("hobby",List.of("1","2","3","4").toString());
- System.out.println(jsonObject);
+ public void TestArrayAdd() throws InterruptedException, FileCacheException {
+ ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile();
+ FileCache fileCache = new FileCache(moduleSrcConfigFile);
+
+ FileCacheManager manager = new FileCacheManager(List.of(fileCache));
+ manager.start();
+
+ System.out.println(manager.addFileCache(fileCache));
+ }
+
+ @Test
+ public void TestAddCache() throws FileCacheException, InterruptedException {
+ FileCacheManagerInstance.getInstance().start();
+ for(int i=0;i<10;i++){
+ Student student = new Student(Integer.toString(i),i,"jsu"+i,"major"+i,null,null);
+ cache.writeKeys(student,"-1");
+ }
+ Thread.sleep(500000);
}
}
diff --git a/FileModule/src/test/java/org/example/bean/Student.java b/FileModule/src/test/java/org/example/pojo/Student.java
similarity index 95%
rename from FileModule/src/test/java/org/example/bean/Student.java
rename to FileModule/src/test/java/org/example/pojo/Student.java
index c67aded..115a8dd 100644
--- a/FileModule/src/test/java/org/example/bean/Student.java
+++ b/FileModule/src/test/java/org/example/pojo/Student.java
@@ -1,4 +1,4 @@
-package org.example.bean;
+package org.example.pojo;
import lombok.Data;
diff --git a/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java b/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java
index dfef6a2..2d49bc2 100644
--- a/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java
+++ b/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java
@@ -1,15 +1,9 @@
package org.example.util;
-import com.alibaba.fastjson.JSONReader;
-import com.alibaba.fastjson.JSONWriter;
-import org.example.bean.Student;
+import org.example.pojo.Student;
import org.junit.jupiter.api.Test;
-import org.junit.platform.commons.util.PackageUtils;
-import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
diff --git a/FileModule/target/classes/test.json b/FileModule/target/classes/test.json
index 2378b53..eeda4e3 100644
--- a/FileModule/target/classes/test.json
+++ b/FileModule/target/classes/test.json
@@ -1,10 +1,4 @@
{
- "name": "ChopperBot",
- "description": "A bot for the ChopperMC server",
- "version": "1.0.0",
- "module": {
- "type": ["Account","Creeper","File","Hot","Publish","Section","SectionWork","VideoSection"],
- "main": "console",
- "ui": "console-ui"
- }
+ "data":[],
+ "updateTime":"2023-04-25 23:46:35"
}
diff --git a/FileModule/target/test-classes/org/example/bean/Student.class b/FileModule/target/test-classes/org/example/bean/Student.class
deleted file mode 100644
index 5468203..0000000
Binary files a/FileModule/target/test-classes/org/example/bean/Student.class and /dev/null differ
diff --git a/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class b/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class
index a9384e8..7030f22 100644
Binary files a/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class and b/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class differ
diff --git a/README.md b/README.md
index 745ab25..ee002c1 100644
--- a/README.md
+++ b/README.md
@@ -60,7 +60,8 @@
介绍:支持文件上传,支持文件下载,支持文件管理,信息持久化
#### 待完成功能:
-- [ ] 一套完整的文件操控工具
+- [x] 一套完整的文件操控工具
+- [x] 文件缓存池,文件缓存自动刷入器
- [ ] 远端文件上传:支持将本地文件上传至远端服务器
- [ ] 远端文件下载:支持将远端服务器的文件下载至本地
- [ ] 远端文件管理:支持对远端服务器的文件进行管理
diff --git a/common/src/main/java/org/example/common/ConfigFile.java b/common/src/main/java/org/example/common/ConfigFile.java
index 17538a0..4232795 100644
--- a/common/src/main/java/org/example/common/ConfigFile.java
+++ b/common/src/main/java/org/example/common/ConfigFile.java
@@ -87,4 +87,12 @@ public abstract class ConfigFile {
}
public void setData(T data){this.data = data;}
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public void setFilePath(String filePath){
+ this.filePath = filePath;
+ }
}
diff --git a/console/src/main/java/org/example/ConsoleApplication.java b/console/src/main/java/org/example/ConsoleApplication.java
index b585518..75657c1 100644
--- a/console/src/main/java/org/example/ConsoleApplication.java
+++ b/console/src/main/java/org/example/ConsoleApplication.java
@@ -1,8 +1,6 @@
package org.example;
-import org.example.bean.ModuleSrcConfigFile;
-import org.example.cache.FileCache;
import org.example.exception.FileCacheException;
import org.example.init.InitWorld;
import org.example.init.ModuleSrcConfigFileInit;
diff --git a/console/src/main/java/org/example/init/InitWorld.java b/console/src/main/java/org/example/init/InitWorld.java
index 94e1ea9..0021d90 100644
--- a/console/src/main/java/org/example/init/InitWorld.java
+++ b/console/src/main/java/org/example/init/InitWorld.java
@@ -41,7 +41,6 @@ public class InitWorld {
return false;
}
}
-
return true;
}
}