diff --git a/src/main/java/com/xydl/cac/iec/GetFileAction.java b/src/main/java/com/xydl/cac/iec/GetFileAction.java new file mode 100644 index 0000000..e413db6 --- /dev/null +++ b/src/main/java/com/xydl/cac/iec/GetFileAction.java @@ -0,0 +1,29 @@ +package com.xydl.cac.iec; + +import com.beanit.iec61850bean.GetFileListener; +import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; + +import java.io.File; + +@Slf4j +public class GetFileAction implements GetFileListener { + File file; + + public GetFileAction(String filename) { + file = new File(filename); + } + + @Override + @Synchronized + public boolean dataReceived(byte[] fileData, boolean moreFollows) { + try { + FileUtils.writeByteArrayToFile(file, fileData, true); + return true; + } catch (Exception e) { + log.error("61850获取文件异常.", e); + return false; + } + } +} diff --git a/src/main/java/com/xydl/cac/iec/IecClient.java b/src/main/java/com/xydl/cac/iec/IecClient.java index 30e89d7..9c31e34 100644 --- a/src/main/java/com/xydl/cac/iec/IecClient.java +++ b/src/main/java/com/xydl/cac/iec/IecClient.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.nio.charset.StandardCharsets; +import java.util.List; @Slf4j public class IecClient implements ClientEventListener { @@ -93,6 +94,19 @@ public class IecClient implements ClientEventListener { } } + public List listFile(String path) throws Exception { + List list = clientAssociation.getFileDirectory(path); + return list; + } + + public void getFile(String remotePath, String filename, String localPath, boolean todel) throws Exception { + GetFileAction gfa = new GetFileAction(localPath); + clientAssociation.getFile(remotePath + filename, gfa); + if (todel) { + clientAssociation.deleteFile(remotePath + filename); + } + } + @Override public void newReport(Report report) { if (report != null) { @@ -113,6 +127,9 @@ public class IecClient implements ClientEventListener { System.out.println(str); str = iecClient.getValue("OMDLMONT/SPDC1.MaxDsch.t", "MX"); System.out.println(str); + List list = iecClient.listFile("/fdata"); + iecClient.getFile("/fdata/web/comtrade/1/18/6/", "20241021_113736_703_0_0.dat", "/eqmid/20241021_113736_703_0_0.dat", true); + } catch (Exception ex) { ex.printStackTrace(); } finally {