package com.njcn.csharmonic.offline.mincfg.vo;//package com.njcn.user.utils.test.test1;
//
//import org.yaml.snakeyaml.reader.StreamReader;
//
//import java.io.IOException;
//
//public class DealDataFile
//{
//	public String Path; //工程文件文件总路径
//	public String RecordPatn; //配置参数文件路径
//	public String PowerSetPath; //风电光伏配置
//	public String comtradePath; //波形文件路径
//	public String logPath; //事件文件路径
//	public String secPath; //3秒文件路径
//	public String MinPath; //分钟统计文件路径
//	public String powerrogPath; //风电光伏数据文件
//
//	public cmn_mode_cfg Record_Info; //参数配置结构
//	public PowerSet Power_Set; //风电光伏配置结构
//
//	public java.util.HashMap<java.util.Date, PowerData> powerRegs = new java.util.HashMap<java.util.Date, PowerData>(); //风电光伏功率区间数据
//	private java.util.Date powerReg_starttime, powerReg_endtime = new java.util.Date(0); //功率区间的时间范围
//
//	private java.util.ArrayList<tagComtradeCfg> tagComtradeCfgs = new java.util.ArrayList<tagComtradeCfg>(); //波形文件cfg信息队列
//	private java.util.ArrayList<NewTaglogbuffer> newTaglogbuffers = new java.util.ArrayList<NewTaglogbuffer>(); //事件队列
//	private java.util.Date Event_starttime, Event_endtime = new java.util.Date(0); //事件的时间范围
//
//	private java.util.ArrayList<tagPQDataCmn> SectagPqDatas = new java.util.ArrayList<tagPQDataCmn>(); //3秒数据队列
//	private java.util.Date Sec_starttime, Sec_endtime = new java.util.Date(0); //3秒数据的时间范围
//	private java.util.ArrayList<tagPQDataCmnHh> SectagPQDataCmnHhs = new java.util.ArrayList<tagPQDataCmnHh>(); //3秒数据下的高次谐波队列
//	private java.util.Date Sechh_starttime, Sechh_endtime = new java.util.Date(0); //3秒数据的高次谐波时间范围
//
//	public java.util.HashMap<java.util.Date, MinData> MinDataDic = new java.util.HashMap<java.util.Date, MinData>(); //分钟数据队列
//	private java.util.Date Min_starttime, Min_endtime = new java.util.Date(0); //分钟数据的时间范围
//	public java.util.HashMap<java.util.Date, MinDataHh> MinDataHhDic = new java.util.HashMap<java.util.Date, MinDataHh>(); //分钟数据下的高次谐波队列
//	private java.util.Date MinHh_starttime, MinHh_endtime = new java.util.Date(0); //分钟数据下的高次谐波的时间范围
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 初始化并执行所有功能
//	public final void Run(String strFile) //解析数据 写入台账 数据入库 参数:工程文件总路径
//	{
//		//ConvertRecord("C:\\Users\\施金磊\\Desktop\\普测测试文档\\3.bin");
//		Path = strFile; //工程文件总路径
//		RecordPatn = strFile + "\\record.bin"; //配置参数文件路径
//		PowerSetPath = strFile + "\\power_set.bin"; //风电光伏配置路径
//		comtradePath = strFile + "\\comtrade"; //波形文件路径
//		logPath = strFile + "\\log"; //事件文件路径
//		secPath = strFile + "\\sec"; //3秒数据文件路径
//		MinPath = strFile + "\\min"; //分钟数据文件路径
//		powerrogPath = strFile + "\\power_reg"; //风电光伏数据文件路径
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析模块
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析配置参数
//		if (File.Exists(RecordPatn)) //解析配置参数
//		{
//			ConvertRecord(RecordPatn);
//		}
//		else
//		{
//			System.out.println("----------配置参数不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析风电光伏参数
//		if (File.Exists(PowerSetPath)) //风电光伏配置参数
//		{
//			ConvertPowerset(PowerSetPath);
//		}
//		else
//		{
//			System.out.println("----------风电光伏配置参数不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析波形的CFG文件
//		DirectoryInfo Comtrade = new DirectoryInfo(comtradePath);
//		if (Directory.Exists(Comtrade.FullName) && Comtrade.GetFiles().getLength() != 0) //波形文件夹和波形文件存在 解析cfg文件
//		{
//			ConvertCfgFile(Comtrade.FullName);
//		}
//		else
//		{
//			System.out.println("----------波形文件不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析log事件文件
//		DirectoryInfo log = new DirectoryInfo(logPath);
//		if (Directory.Exists(log.FullName) && log.GetFiles().getLength() != 0) //事件文件夹和事件文件存在 解析log文件
//		{
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//			var files = Directory.GetFiles(log.FullName, "*.bin"); //获取文件夹下所有bin文件
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//			for (var file : files)
//			{
//				ConvertLog(file);
//			}
//		}
//		else
//		{
//			System.out.println("----------事件文件不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析3秒数据和3秒数据下的高频谐波
//		DirectoryInfo sec = new DirectoryInfo(secPath);
//		if (Directory.Exists(sec.FullName) && sec.GetDirectories().getLength() != 0) //3秒文件夹存在 解析3秒文件
//		{
//			for (DirectoryInfo dir : sec.GetDirectories())
//			{
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				var files = Directory.GetFiles(dir.FullName, "*.bin"); //获取文件夹下所有bin文件
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				for (var file : files)
//				{
//					if (file.toUpperCase().indexOf("HH") >= 0) //读取3秒下的高频谐波数据
//					{
//						ConvertSecHh(file);
//					}
//					else //读取3秒数据
//					{
//						ConvertSec(file);
//					}
//
//				}
//			}
//		}
//		else
//		{
//			System.out.println("----------3秒数据文件不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析分钟数据和分钟数据下的高频谐波
//		DirectoryInfo min = new DirectoryInfo(MinPath);
//		if (Directory.Exists(min.FullName) && min.GetDirectories().getLength() != 0) //分钟数据文件夹存在 解析分钟数据文件
//		{
//			for (DirectoryInfo dir : min.GetDirectories())
//			{
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				var files = Directory.GetFiles(dir.FullName, "*.bin"); //获取文件夹下所有bin文件
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				for (var file : files)
//				{
//					if (file.toUpperCase().indexOf("HH") >= 0) //读取分钟秒下的高频谐波数据
//					{
//						ConvertMinHh(file);
//					}
//					else //读取分钟数据
//					{
//						ConvertMin(file);
//					}
//				}
//			}
//		}
//		else
//		{
//			System.out.println("----------分钟数据文件不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#region 解析风电光伏数据
//		DirectoryInfo powerrog = new DirectoryInfo(powerrogPath);
//		if (Directory.Exists(powerrog.FullName) && powerrog.GetDirectories().getLength() != 0) //风电光伏数据文件夹存在 解析风电光伏数据文件
//		{
//			for (DirectoryInfo dir : powerrog.GetDirectories())
//			{
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				var files = Directory.GetFiles(dir.FullName, "*.bin"); //获取文件夹下所有bin文件
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//				for (var file : files)
//				{
//					ConvertPowerreg(file);
//				}
//			}
//		}
//		else
//		{
//			System.out.println("----------风电光伏数据文件不存在----------");
//		}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//			///#endregion
//
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析record参数文件
//	public final void ConvertRecord(String strFile) //配置参数文件解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = prj_record_info.GetSize(); //计算单个统计结构大小
//		int n2BufLen = cmn_mode_cfg.GetSize(); //计算单个统计结构大小
//
//		prj_record_info prj_Record_Info = new prj_record_info();
//		cmn_mode_cfg cmn_Mode_Cfg = new cmn_mode_cfg();
//		if (nBufSize == n1BufLen) //结构大小正常
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(0, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			prj_Record_Info.SetStructBuf(bBuf, 0);
//			Record_Info = prj_Record_Info.cfg;
//		}
//		else if (nBufSize == n2BufLen)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(0, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			cmn_Mode_Cfg.SetStructBuf(bBuf, 0);
//			Record_Info = cmn_Mode_Cfg;
//		}
//		else
//		{
//			System.out.println(String.format("解析配置参数文件异常"));
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析record中的cfg参数文件
//	public final void ConvertRecordcfg(String strFile) //配置参数cfg类型文件解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = cmn_mode_cfg.GetSize(); //计算单个统计结构大小
//
//		cmn_mode_cfg cmn_Mode_Cfg = new cmn_mode_cfg();
//		if (nBufSize == n1BufLen) //结构大小正常
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(0, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			cmn_Mode_Cfg.SetStructBuf(bBuf, 0);
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析power_set参数文件
//	public final void ConvertPowerset(String strFile) //解析风电光伏配置参数
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = PowerSet.GetSize(); //计算单个统计结构大小
//
//		PowerSet powerSet = new PowerSet();
//		if (nBufSize == n1BufLen) //结构大小正常
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(0, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			powerSet.SetStructBuf(bBuf, 0);
//			Power_Set = powerSet;
//		}
//		else
//		{
//			System.out.println(String.format("解析配置参数文件异常"));
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析单个log事件文件和cfg录波文件
//	public final void ConvertLog(String strFile) //事件参数文件解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int LogLen = System.Runtime.InteropServices.Marshal.SizeOf(NewHeadTaglogbuffer.class); //单个头结构大小
//		int n1BufLen = LogLen + 4 * 8; //单个固定结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nEventNum = (uint)(nBufSize / n1BufLen);
//		int nEventNum = (int)(nBufSize / n1BufLen); //确认共多少事件数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nEventNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			NewTaglogbuffer newTaglogbuffer = getnewTaglogbuffer(bBuf);
//			newTaglogbuffers.add(newTaglogbuffer);
//			nStep += n1BufLen;
//
//			TagMsTime Devtime = newTaglogbuffer.newHeadTaglogbuffer.Devtime.clone();
//			java.util.Date time = new java.util.Date(Devtime.Year, Devtime.Month, Devtime.Day, Devtime.Hour, Devtime.Min, Devtime.Sec, Devtime.Ms);
//			if (!Event_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, Event_starttime) <= 0)
//				{
//					Event_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				Event_starttime = time;
//			}
//			if (!Event_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, Event_endtime) >= 0)
//				{
//					Event_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				Event_endtime = time;
//			}
//
//			float sec = 0;
//			for (NewBodyTaglogbuffer sing : newTaglogbuffer.newBodyTaglogbuffers)
//			{
//				switch (sing.ParaCode)
//				{
//					case 0: //特征幅值
//						//fParam2 = sing.ParaValue / 65536.0f;
//						break;
//					case 1: //持续时间
//						sec = sing.ParaValue / 65536.0f;
//						break;
//					case 5: //相别
//						break;
//					case 25: //浮动门槛值
//						//fParam3 = sing.ParaValue / 65536.0f;
//						break;
//					default:
//						break;
//				}
//			}
//			newTaglogbuffer.start = time; //事件开始时间
//			newTaglogbuffer.end = time.AddSeconds(sec); //事件结束时间
//
//			for (tagComtradeCfg sing : tagComtradeCfgs)
//			{
//				if (java.util.Date.Compare(sing.TimeTrigger, newTaglogbuffer.start) <= 0 && java.util.Date.Compare(sing.TimeEnd, newTaglogbuffer.start) >= 0)
//				{
//					newTaglogbuffer.path = sing.path;
//					break;
//				}
//			}
//		}
//	}
//	public final void ConvertCfgFile(String strFilePath) //解析cfg录波文件
//	{
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//		var files = Directory.GetFiles(strFilePath, "*.cfg"); //获取文件夹下所有cfg文件
////C# TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing in Java:
//		for (var file : files)
//		{
//			AnalyseComtradeCfg(file);
//		}
//	}
//	public final NewTaglogbuffer getnewTaglogbuffer(byte[] Data)
//	{
//		NewHeadTaglogbuffer head = getNewHeadTaglogbuffer(Data).clone();
//		java.util.ArrayList<NewBodyTaglogbuffer> bodylist = getNewBodyTaglogbuffer(Data, head.clone());
//		NewTaglogbuffer newTaglogbuffer = new NewTaglogbuffer(head.clone(), bodylist);
//		return newTaglogbuffer;
//	}
//	public final NewHeadTaglogbuffer getNewHeadTaglogbuffer(byte[] Data)
//	{
//		int structlen = System.Runtime.InteropServices.Marshal.SizeOf(NewHeadTaglogbuffer.class);
//		byte[] buff = new byte[structlen];
//		System.arraycopy(Data, 0, buff, 0, structlen);
//		for (int i = 0; i < 12 * 2; i += 2)
//		{
//			RefObject<Byte[]> tempRef_buff = new RefObject<Byte[]>(buff);
//			ReversalBuff(tempRef_buff, i, 2);
//			buff = tempRef_buff.argvalue;
//		}
//		for (int i = 12 * 2; i < (12 * 2 + 1 * 4); i += 4)
//		{
//			RefObject<Byte[]> tempRef_buff2 = new RefObject<Byte[]>(buff);
//			ReversalBuff(tempRef_buff2, i, 4);
//		}
//			buff = tempRef_buff2.argvalue;
//		//数据区转换为结构
//		NewHeadTaglogbuffer logBuff = (NewHeadTaglogbuffer)BytesToStruct(buff, 0, Marshal.SizeOf(NewHeadTaglogbuffer.class), NewHeadTaglogbuffer.class);
//		return logBuff;
//	}
//	public final java.util.ArrayList<NewBodyTaglogbuffer> getNewBodyTaglogbuffer(byte[] Data, NewHeadTaglogbuffer head)
//	{
//		java.util.ArrayList<NewBodyTaglogbuffer> newBodyTaglogbuffers = new java.util.ArrayList<NewBodyTaglogbuffer>();
//		int structlen = System.Runtime.InteropServices.Marshal.SizeOf(NewHeadTaglogbuffer.class);
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint bodylen = head.LogParaNum * 8;
//		int bodylen = head.LogParaNum * 8;
//		byte[] buff = new byte[bodylen];
//		System.arraycopy(Data, structlen, buff, 0, bodylen);
//		for (int i = 0; i < (head.LogParaNum * 8); i += 4)
//		{
//			RefObject<Byte[]> tempRef_buff = new RefObject<Byte[]>(buff);
//			ReversalBuff(tempRef_buff, i, 4);
//		}
//			buff = tempRef_buff.argvalue;
//		for (int i = 0; i < head.LogParaNum; i++)
//		{
//			NewBodyTaglogbuffer logBuff = (NewBodyTaglogbuffer)BytesToStruct(buff, (i * 8), Marshal.SizeOf(NewBodyTaglogbuffer.class), NewBodyTaglogbuffer.class);
//			newBodyTaglogbuffers.add(logBuff.clone());
//		}
//		return newBodyTaglogbuffers;
//	}
//	public final boolean ReversalBuff(RefObject<Byte[]> Buffer, int StartIndex, int bufflen)
//	{
//		if (bufflen % 2 != 0) //确保长度为偶数
//		{
//			return false;
//		}
//
//		int halflen = bufflen / 2;
//		byte[] Temp = new byte[halflen];
//		for (int i = 0; i < halflen; i++)
//		{
//			Temp[i] = Buffer.argvalue[i + StartIndex];
//			Buffer.argvalue[i + StartIndex] = Buffer.argvalue[bufflen + StartIndex - i - 1];
//			Buffer.argvalue[bufflen + StartIndex - i - 1] = Temp[i];
//		}
//		return true;
//	}
//	public static Object BytesToStruct(byte[] buf, int nStart, int len, Class type)
//	{
//		Object rtn;
//		IntPtr buffer = Marshal.AllocHGlobal(len);
//		Marshal.Copy(buf, nStart, buffer, len);
//		rtn = Marshal.PtrToStructure(buffer, type);
//		Marshal.FreeHGlobal(buffer);
//		return rtn;
//	}
//	public final boolean AnalyseComtradeCfg(String strFilePath) //读取、分析cfg录波文件!!!
//	{
//		if (strFilePath.equals("")) //例：D:\执行程序\PQD-5700\Data\Comtrade\192.168.1.193\1_20180124_100125_937.cfg
//		{
//			return false;
//		}
//
//		int i = 0; //用于遍历 字符串转换的字段数组
//		String strFileLine; //临时存放 cfg每行读取的字符串
//		String[] strTempArray; //临时存放 字符串转换的字段数组
//		tagComtradeCfg ComtradeCfg;
//		tagRates RatesCfg;
//		try
//		{
//			FileStream ReadFile = new FileStream(strFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //例：strFilePath = D:\执行程序\PQD-5700\Data\Comtrade\192.168.1.193\20180124_100125_937.cfg
//			StreamReader sr = new StreamReader(ReadFile, Encoding.Default);
//			ComtradeCfg = new tagComtradeCfg(); //配置文件总类对象初始化
//			RatesCfg = new tagRates(); //多段采样类对象初始化
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nFreq = 0;
//			int nFreq = 0; //临时存放 采样频率 例：50Hz
//												//第一行不关心仅仅是一些描述类的信息
//			strFileLine = sr.ReadLine(); //①例：PQS,570,1999
//										 //第二行需要关心第二个：模拟通道编号(模拟量的个数)和第三个：状态通道参数(开关量的个数)
//			strFileLine = sr.ReadLine(); //②例：3,3A,0D
//			strTempArray = strFileLine.split("[,]", -1); //将字符串转字符数组
//			for (i = 0; i < strTempArray.length; i++) //遍历 字符串转换的字段数组
//			{
//				switch (i)
//				{
//					case 0: //总个数
//						ComtradeCfg.nChannelNum = Integer.parseInt(strTempArray[i]); //通道总个数 例：3
//						break;
//					case 1: //模拟量的个数
//						{
//							String str = strTempArray[i].substring(0, strTempArray[i].length() - 1); //从此实例"3A"检索子字符串 例：3 = 3A.Substring(0,2 - 1)
//							ComtradeCfg.nAnalogNum = Integer.parseInt(str); //模拟量通道的个数 例：3
//						}
//						break;
//					case 2: //开关量的个数
//						{
//							String str = strTempArray[i].substring(0, strTempArray[i].length() - 1); //从此实例"0D"检索子字符串 例：0 = 0D.Substring(0,2 - 1)
//							ComtradeCfg.nDigitalNum = Integer.parseInt(str); //数字量通道的个数 例：0
//						}
//						break;
//				}
//			}
//			//从第三行到第ComtradeCfg.nChannelNum+3行是模拟量通道和数字量通道
//			for (i = 0; i < ComtradeCfg.nChannelNum; i++) //通道个数 例：3
//			{
//				tagOneChannleCfg OneChannlecfg = new tagOneChannleCfg(); //模拟量通道记录类链表
//				ComtradeCfg.OneChannleCfg.add(OneChannlecfg); //添加 模拟量通道记录类链表
//
//				strFileLine = sr.ReadLine(); //③例：1,UA,A,PQS,V,0.062243,0,0,-32767,32767,10000,100,S //通道1
//											 //④    2,UB,B,PQS,V,0.062243,0,0,-32767,32767,10000,100,S //通道2
//											 //⑤    3,UC,C,PQS,V,0.062237,0,0,-32767,32767,10000,100,S //通道3
//				strTempArray = strFileLine.split("[,]", -1); //将字符串转字符数组
//																	   //配置总共13项
//				for (int j = 0; j < strTempArray.length; j++) //遍历 该行数据信息
//				{
//					switch (j)
//					{
//						case 0: //通道序号
//							OneChannlecfg.nIndex = Integer.parseInt(strTempArray[j]);
//							break;
//						case 1: //通道名称
//							OneChannlecfg.szChannleName = strTempArray[j];
//							break;
//						case 2: //相位名称
//							OneChannlecfg.szPhasicName = strTempArray[j];
//							break;
//						case 3: //监视的通道名称
//							OneChannlecfg.szMonitoredChannleName = strTempArray[j];
//							break;
//						case 4: //通道的单位
//							OneChannlecfg.szUnitName = strTempArray[j];
//							break;
//						case 5: //通道的系数
//							OneChannlecfg.fCoefficent = Float.parseFloat(strTempArray[j]); //通道的系数
//							break;
//						case 6: //通道的偏移量
//							OneChannlecfg.fOffset = Float.parseFloat(strTempArray[j]);
//							break;
//						case 7: //起始采样时间的偏移量
//							OneChannlecfg.fTimeOffset = Float.parseFloat(strTempArray[j]);
//							break;
//						case 8: //采样值的最小值
//							OneChannlecfg.nMin = Integer.parseInt(strTempArray[j]);
//							break;
//						case 9: //采样值的最大值
//							OneChannlecfg.nMax = Integer.parseInt(strTempArray[j]);
//							break;
//						case 10: //一次变比
//							OneChannlecfg.fPrimary = Float.parseFloat(strTempArray[j]);
//							break;
//						case 11: //二次变比
//							OneChannlecfg.fSecondary = Float.parseFloat(strTempArray[j]);
//							break;
//						case 12: //一次值还是二次值标志
//							OneChannlecfg.szValueType = strTempArray[j];
//							break;
//						default:
//							break;
//					}
//				}
//			}
//			//采样频率：在交变电流电路中一秒钟内交流电所允许而必须变化的周期数，即：在单位时间内振动的次数
//			strFileLine = sr.ReadLine(); //⑥例：50
//			float fFreq = Float.parseFloat(strFileLine);
//			nFreq = (int)fFreq; //电网频率
//								 //采样段数
//			strFileLine = sr.ReadLine(); //⑦例：1
//			int nRates = Integer.parseInt(strFileLine); //采样段数(整型)
//			RatesCfg.nRates = nRates; //采样段数(整型)
//
//			long nOffset = 0; //上一段单周波采样点数
//			long nMSTotal = 0; //录波总毫秒数
//			for (i = 0; i < nRates; i++) //遍历 采样段数 注：每次读取一行(该段采样率,该段采样点数)配置信息
//			{
//				//获得每段的采样率、采样点数  注：每段的采样率可以不同!
//				strFileLine = sr.ReadLine(); //⑧例：3200,22400 ——> 理解为：1到22400这22400个数据的采样率是3200
//				strTempArray = strFileLine.split("[,]", -1); //将字符串转字符数组 例：{3200，22400}
//
//				tagOneRate OneRate = new tagOneRate(); //1段采样类对象
//				RatesCfg.OneRate.add(OneRate); //添加 (每周波)采样率链表 —— zl 2018-4-22 16:03:30
//				for (int j = 0; j < strTempArray.length; j++) //遍历 该行数据信息
//				{
//					switch (j)
//					{
//						case 0: //采样率：1秒钟内的采样点数
//							OneRate.nOneSample = (long)Float.parseFloat(strTempArray[j]) / nFreq; //(单周波)采样点数 例：64点 = 3200 / 50Hz
//							break;
//						case 1: //总采样点数
//							OneRate.nSampleNum = (long)Float.parseFloat(strTempArray[j]) - nOffset; //总采样点数，即：采样数据个数 例：22400 = 22400 - 0
//							nOffset += OneRate.nSampleNum; //nOffset：上一段单周波采样点数 例：22400
//							break;
//						default:
//							break;
//					}
//					nMSTotal += OneRate.nSampleNum / OneRate.nOneSample; //周波总个数
//				}
//			}
//			nMSTotal *= 20; //录波总毫秒数 注：一个周波20ms，所以此处要乘以20
//			if (nMSTotal > 60000) //如果事件长度超过1分钟，则结束处理，不调用录波高级算法qvvr_fun
//			{
//				sr.Close(); //关闭System.IO.StreamReader对象和基础流，并释放与读取器关联的所有系统资源
//				ReadFile.Close();
//				return false;
//			}
//
//			//波形起始时间
//			strFileLine = sr.ReadLine(); //⑨例：24/01/2018,10:01:25.737000
//										 //使用指定的格式和区域性特定格式信息，将日期和时间的指定字符串表示形式转换为其等效的System.DateTime。字符串表示形式的格式必须与指定的格式完全匹配。
//			ComtradeCfg.TimeTrigger = java.util.Date.ParseExact(strFileLine, "dd/MM/yyyy,HH:mm:ss.ffffff", System.Globalization.CultureInfo.InvariantCulture); //将strFileLine对应字符串转成指定日期格式
//																																						 //暂态触发时间
//			strFileLine = sr.ReadLine(); //⑩例：24/01/2018,10:01:25.937000
//			ComtradeCfg.TimeStart = java.util.Date.ParseExact(strFileLine, "dd/MM/yyyy,HH:mm:ss.ffffff", System.Globalization.CultureInfo.InvariantCulture); //将strFileLine对应字符串转成指定日期格式
//			ComtradeCfg.TimeEnd = ComtradeCfg.TimeStart.AddMilliseconds(nMSTotal); //波形结束时间
//			ComtradeCfg.path = strFilePath.split("[\\\\]", -1).Last();
//			tagComtradeCfgs.add(ComtradeCfg);
//			//数据文件类型
//			//ComtradeCfg.TimeEnd = constdef.GetUTCTime(Convert.ToInt64(ComtradeCfg.TimeStart) / 1000);
//			//long nMillsec = Convert.ToInt64(ComtradeCfg.TimeStart) % 1000;
//			//ComtradeCfg.TimeEnd = new DateTime(ComtradeCfg.TimeEnd.Ticks + nMillsec * 10000);
//			//ComtradeCfg.TimeEnd = new DateTime(nMSTotal + nMillsec * 10000);
//			//20190624更新增加时间的方法
//
//			sr.Close(); //关闭System.IO.StreamReader对象和基础流，并释放与读取器关联的所有系统资源
//			ReadFile.Close();
//		}
//		catch (IOException e)
//		{
//			System.out.println(String.format("打开文件%1$s发生错误%2$s", strFilePath, e.getMessage()));
//			return false;
//		}
//
//		return true;
//	}
//	public static class tagComtradeCfg
//	{
//		public int nChannelNum; //通道总个数
//		public int nAnalogNum; //模拟量通道的个数 WW 2013-05-15
//		public int nDigitalNum; //数字量通道的个数 WW 2013-05-15
//		public java.util.ArrayList<tagOneChannleCfg> OneChannleCfg; //模拟量通道记录类链表
//		public java.util.ArrayList<tagOneChannleCfg_digital> OneChannleCfgDig; //数字量通道记录类链表
//		public java.util.Date TimeTrigger = new java.util.Date(0); //暂态触发时间
//		public java.util.Date TimeStart = new java.util.Date(0); //波形起始时间 注：相较于TimeTrigger波形触发时间起始有一段平滑过渡波形时间，约100ms
//		public java.util.Date TimeEnd = new java.util.Date(0); //波形结束时间
//		public String path; //对应波形cfg文件全路径名称
//		public tagComtradeCfg()
//		{
//			OneChannleCfg = new java.util.ArrayList<tagOneChannleCfg>();
//			OneChannleCfgDig = new java.util.ArrayList<tagOneChannleCfg_digital>();
//		}
//	}
//	//1段采样类
//	public static class tagOneRate
//	{
//		//采样率：1秒钟内的采样点数
//		public long nOneSample;
//		//总采样点数
//		public long nSampleNum;
//		//(1段录波中)波形个数
//		public long nWaveNum;
//		//抽点采样间隔 = CFG中每段录波采样率 / 实际抽点采样率
//		public long nWaveSpan;
//	}
//	//多段采样类
//	public static class tagRates
//	{
//		public int nRates; //采样段数
//		public java.util.ArrayList<tagOneRate> OneRate; //(每周波)采样率链表
//		public tagRates()
//		{
//			OneRate = new java.util.ArrayList<tagOneRate>(); //(每周波)采样率链表 初始化
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region comtrad文件相关
//	//模拟量通道记录类
//	public static class tagOneChannleCfg
//	{
//		//通道序号
//		public int nIndex;
//		//通道名称
//		public String szChannleName;
//		//相位名称
//		public String szPhasicName;
//		//监视的通道名称
//		public String szMonitoredChannleName;
//		//通道的单位
//		public String szUnitName;
//		//通道的系数
//		public float fCoefficent;
//		//通道的便宜量
//		public float fOffset;
//		//起始采样时间的偏移量
//		public float fTimeOffset;
//		//采样值的最小值
//		public int nMin;
//		//采样值的最大值
//		public int nMax;
//		//一次变比
//		public float fPrimary;
//		//二次变比
//		public float fSecondary;
//		//一次值还是二次值标志
//		public String szValueType;
//	}
//
//	//数字量通道记录类
//	public static class tagOneChannleCfg_digital
//	{
//		//通道序号
//		public int nIndex;
//		//通道名称
//		public String szChannleName;
//		//相位名称
//		public String szPhasicName;
//		//监视的通道名称
//		public String szMonitoredChannleName;
//		//通道的单位
//		public int Initial;
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析sec参数文件
//	public final void ConvertSec(String strFile) //3秒数据文件解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = tagPQDataCmn.GetSize(); //计算单个统计结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nSecNum = (uint)(nBufSize / n1BufLen);
//		int nSecNum = (int)(nBufSize / n1BufLen); //确认共多少事件数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nSecNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			tagPQDataCmn tagPqData = new tagPQDataCmn();
//			tagPqData.SetStructBuf(bBuf, 0);
//
//			SectagPqDatas.add(tagPqData);
//			nStep += n1BufLen;
//
//			RTC_Timer_MS Devtime = tagPqData.time;
//			java.util.Date time = new java.util.Date(Devtime.year, Devtime.month, Devtime.day, Devtime.hour, Devtime.minute, Devtime.second, Devtime.millisecond);
//			if (!Sec_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, Sec_starttime) <= 0)
//				{
//					Sec_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				Sec_starttime = time;
//			}
//			if (!Sec_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, Sec_endtime) >= 0)
//				{
//					Sec_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				Sec_endtime = time;
//			}
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析3秒数据下的高次谐波
//	public final void ConvertSecHh(String strFile) //3秒数据下的高次谐波解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = tagPQDataCmnHh.GetSize(); //计算单个统计结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nSecNum = (uint)(nBufSize / n1BufLen);
//		int nSecNum = (int)(nBufSize / n1BufLen); //确认共多少事件数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nSecNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			tagPQDataCmnHh tagPqData = new tagPQDataCmnHh();
//			tagPqData.SetStructBuf(bBuf, 0);
//
//			SectagPQDataCmnHhs.add(tagPqData);
//			nStep += n1BufLen;
//
//			RTC_Timer_MS Devtime = tagPqData.time;
//			java.util.Date time = new java.util.Date(Devtime.year, Devtime.month, Devtime.day, Devtime.hour, Devtime.minute, Devtime.second, Devtime.millisecond);
//			if (!Sechh_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, Sechh_starttime) <= 0)
//				{
//					Sechh_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				Sechh_starttime = time;
//			}
//			if (!Sechh_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, Sechh_endtime) >= 0)
//				{
//					Sechh_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				Sechh_endtime = time;
//			}
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析min参数文件
//	public static class MinData //分钟数据类型
//	{
//		public tagPQDataCmn max;
//		public tagPQDataCmn min;
//		public tagPQDataCmn cp95;
//		public tagPQDataCmn avg;
//	}
//	public final void ConvertMin(String strFile) //分钟统计数据文件解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = tagPQDataCmn.GetSize(); //计算单个统计结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nMinNum = (uint)(nBufSize / n1BufLen);
//		int nMinNum = (int)(nBufSize / n1BufLen); //确认共多少分钟数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nMinNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			tagPQDataCmn tagPqData = new tagPQDataCmn();
//			tagPqData.SetStructBuf(bBuf, 0);
//			nStep += n1BufLen;
//
//			RTC_Timer_MS Devtime = tagPqData.time;
//			java.util.Date time = new java.util.Date(Devtime.year, Devtime.month, Devtime.day, Devtime.hour, Devtime.minute, Devtime.second, Devtime.millisecond);
//			if (!Min_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, Min_starttime) <= 0)
//				{
//					Min_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				Min_starttime = time;
//			}
//			if (!Min_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, Min_endtime) >= 0)
//				{
//					Min_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				Min_endtime = time;
//			}
//
//			if (strFile.toUpperCase().indexOf("AVG") >= 0)
//			{
//				if (MinDataDic.containsKey(time))
//				{
//					MinDataDic.get(time).avg = tagPqData;
//				}
//				else
//				{
//					MinData minData = new MinData();
//					minData.avg = tagPqData;
//					MinDataDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("CP95") >= 0)
//			{
//				if (MinDataDic.containsKey(time))
//				{
//					MinDataDic.get(time).cp95 = tagPqData;
//				}
//				else
//				{
//					MinData minData = new MinData();
//					minData.cp95 = tagPqData;
//					MinDataDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("MAX") >= 0)
//			{
//				if (MinDataDic.containsKey(time))
//				{
//					MinDataDic.get(time).max = tagPqData;
//				}
//				else
//				{
//					MinData minData = new MinData();
//					minData.max = tagPqData;
//					MinDataDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("MIN") >= 0)
//			{
//				if (MinDataDic.containsKey(time))
//				{
//					MinDataDic.get(time).min = tagPqData;
//				}
//				else
//				{
//					MinData minData = new MinData();
//					minData.min = tagPqData;
//					MinDataDic.put(time, minData);
//				}
//			}
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析分钟数据下的高次谐波
//	public static class MinDataHh //分钟数据下的高次谐波数据类型
//	{
//		public tagPQDataCmnHh max;
//		public tagPQDataCmnHh min;
//		public tagPQDataCmnHh cp95;
//		public tagPQDataCmnHh avg;
//	}
//	public final void ConvertMinHh(String strFile) //分钟数据下的高次谐波解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = tagPQDataCmnHh.GetSize(); //计算单个统计结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nSecNum = (uint)(nBufSize / n1BufLen);
//		int nSecNum = (int)(nBufSize / n1BufLen); //确认共多少事件数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nSecNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			tagPQDataCmnHh tagPqData = new tagPQDataCmnHh();
//			tagPqData.SetStructBuf(bBuf, 0);
//			nStep += n1BufLen;
//
//			RTC_Timer_MS Devtime = tagPqData.time;
//			java.util.Date time = new java.util.Date(Devtime.year, Devtime.month, Devtime.day, Devtime.hour, Devtime.minute, Devtime.second, Devtime.millisecond);
//			if (!MinHh_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, MinHh_starttime) <= 0)
//				{
//					MinHh_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				MinHh_starttime = time;
//			}
//			if (!MinHh_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, MinHh_endtime) >= 0)
//				{
//					MinHh_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				MinHh_endtime = time;
//			}
//
//			if (strFile.toUpperCase().indexOf("AVG") >= 0)
//			{
//				if (MinDataHhDic.containsKey(time))
//				{
//					MinDataHhDic.get(time).avg = tagPqData;
//				}
//				else
//				{
//					MinDataHh minData = new MinDataHh();
//					minData.avg = tagPqData;
//					MinDataHhDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("CP95") >= 0)
//			{
//				if (MinDataHhDic.containsKey(time))
//				{
//					MinDataHhDic.get(time).cp95 = tagPqData;
//				}
//				else
//				{
//					MinDataHh minData = new MinDataHh();
//					minData.cp95 = tagPqData;
//					MinDataHhDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("MAX") >= 0)
//			{
//				if (MinDataHhDic.containsKey(time))
//				{
//					MinDataHhDic.get(time).max = tagPqData;
//				}
//				else
//				{
//					MinDataHh minData = new MinDataHh();
//					minData.max = tagPqData;
//					MinDataHhDic.put(time, minData);
//				}
//			}
//			else if (strFile.toUpperCase().indexOf("MIN") >= 0)
//			{
//				if (MinDataHhDic.containsKey(time))
//				{
//					MinDataHhDic.get(time).min = tagPqData;
//				}
//				else
//				{
//					MinDataHh minData = new MinDataHh();
//					minData.min = tagPqData;
//					MinDataHhDic.put(time, minData);
//				}
//			}
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#region 解析风电光伏功率区间数据
//	public static class PowerData //分钟数据类型
//	{
//		public PowerReg max;
//		public PowerReg min;
//		public PowerReg cp95;
//		public PowerReg avg;
//	}
//	public final void ConvertPowerreg(String strFile) //功率区间数据解析
//	{
//		FileStream BinFile = new FileStream(strFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
//		//转换为byte[]
//		if (BinFile.getLength() == 0)
//		{
//			System.out.println(String.format("文件%1$s 长度为0字节，程序将跳过本文件的转换", strFile));
//			BinFile.Close();
//			return;
//		}
//
//		long nBufSize = BinFile.getLength(); //计算需要解析的文件总长
//		int n1BufLen = PowerReg.GetSize(); //计算单个统计结构大小
////C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
////ORIGINAL LINE: uint nMinNum = (uint)(nBufSize / n1BufLen);
//		int nMinNum = (int)(nBufSize / n1BufLen); //确认共多少分钟数据结构
//
//		int nStep = 0; //读取偏移量
//		for (int i = 0; i < nMinNum; i++)
//		{
//			byte[] bBuf = new byte[n1BufLen]; //单个统计结构
//			int nReadLen = 0;
//			try
//			{
//				BinFile.Seek(nStep, SeekOrigin.Begin);
//				nReadLen = BinFile.Read(bBuf, 0, bBuf.length);
//			}
//			catch (FileLoadException e)
//			{
//				System.out.println(String.format("文件%1$s 读取时发生错误，代码为%2$s", strFile, e.getClass().getName()));
//				return;
//			}
//
//			PowerReg powerReg = new PowerReg();
//			powerReg.SetStructBuf(bBuf, 0);
//			nStep += n1BufLen;
//
//			RTC_Timer_MS Devtime = powerReg.time;
//
//			java.util.Date time = new java.util.Date(0);
//
//			try
//			{
//				time = new java.util.Date(Devtime.year, Devtime.month, Devtime.day, Devtime.hour, Devtime.minute, Devtime.second, Devtime.millisecond);
//				// 成功创建 DateTime 对象
//			}
//			catch (ArgumentOutOfRangeException ex)
//			{
//				// 处理超出范围的异常
//			}
//			catch (RuntimeException ex)
//			{
//				// 处理其他异常
//			}
//
//
//			if (!powerReg_starttime.equals(new java.util.Date(0))) //存在启动时间
//			{
//				if (java.util.Date.Compare(time, powerReg_starttime) <= 0)
//				{
//					powerReg_starttime = time;
//				}
//			}
//			else //不存在启动时间 填入当前时间
//			{
//				powerReg_starttime = time;
//			}
//			if (!powerReg_endtime.equals(new java.util.Date(0)))
//			{
//				if (java.util.Date.Compare(time, powerReg_endtime) >= 0)
//				{
//					powerReg_endtime = time;
//				}
//			}
//			else //不存在结束时间 填入当前时间
//			{
//				powerReg_endtime = time;
//			}
//
//			if (powerReg.data_type == 1) //平均值
//			{
//				if (powerRegs.containsKey(time))
//				{
//					powerRegs.get(time).avg = powerReg;
//				}
//				else
//				{
//					PowerData powerData = new PowerData();
//					powerData.avg = powerReg;
//					powerRegs.put(time, powerData);
//				}
//			}
//			else if (powerReg.data_type == 2) //最大值
//			{
//				if (powerRegs.containsKey(time))
//				{
//					powerRegs.get(time).max = powerReg;
//				}
//				else
//				{
//					PowerData powerData = new PowerData();
//					powerData.max = powerReg;
//					powerRegs.put(time, powerData);
//				}
//			}
//			else if (powerReg.data_type == 4) //最小值
//			{
//				if (powerRegs.containsKey(time))
//				{
//					powerRegs.get(time).min = powerReg;
//				}
//				else
//				{
//					PowerData powerData = new PowerData();
//					powerData.min = powerReg;
//					powerRegs.put(time, powerData);
//				}
//			}
//			else if (powerReg.data_type == 8) //95值
//			{
//				if (powerRegs.containsKey(time))
//				{
//					powerRegs.get(time).cp95 = powerReg;
//				}
//				else
//				{
//					PowerData powerData = new PowerData();
//					powerData.cp95 = powerReg;
//					powerRegs.put(time, powerData);
//				}
//			}
//		}
//	}
////C# TO JAVA CONVERTER TODO TASK: There is no preprocessor in Java:
//		///#endregion
//
//}