From bd05b58dc4eb317a58e2f5e131a7e25b7faa56cf Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 22 Oct 2024 09:04:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A061850=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=96=87=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/iec/GetFileAction.java | 29 +++++++++++++++++++ src/main/java/com/xydl/cac/iec/IecClient.java | 17 +++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/main/java/com/xydl/cac/iec/GetFileAction.java 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 {