1、文件格式

ALARM_ID=102305_404205
EVENT_TIME=-- ::
NOTIFICATION_TYPE=
MANAGED_OBJECT_INSTANCE=NodeId=,BssId=,BtsId=,RackId=
PERCEIVED_SEVERITY=
ALARM_TYPE=
PROBABLE_CAUSE=
SPECIFIC_PROBLEM=直流电压低于47V(RRU干结点监控)
ADDITIONAL_TEXT=AlarmCode(),AlarmInfo(The subsystem No. , RRU_INFO=[RRU ID=, Alias=武隆中兴隧道RRU0_江口支局, Type=RRU])

2、创建实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LteAlarmAnalysis.Entities
{
    /// <summary>
    /// 中兴 3G 告警Ftp下载数据实体
    /// 日期 : 2016年8月16日
    /// 作者 : 老郑
    ///
    /// ALARM_ID=102301_928516
    /// EVENT_TIME=2016-08-16 09:59:35
    /// NOTIFICATION_TYPE=5
    /// MANAGED_OBJECT_INSTANCE=NodeId=102301,BssId=0,BtsId=38,RackId=2
    /// PERCEIVED_SEVERITY=6
    /// ALARM_TYPE=4
    /// PROBABLE_CAUSE=550
    /// SPECIFIC_PROBLEM=直流电压低于51V或交流故障(RRU干结点监控)
    /// ADDITIONAL_TEXT=AlarmCode(1005019),AlarmInfo(The subsystem No. is 9, RRU_INFO=[RRU ID=4, Alias=万州石桥毛岭RRU_武陵支局, Type=RRU])
    /// </summary>
    public class AlarmEntities3GZte
    {

        public string ALARM_ID { get; set; }

        public string EVENT_TIME { get; set; }

        public string NOTIFICATION_TYPE { get; set; }

        public string MANAGED_OBJECT_INSTANCE { get; set; }

        public string PERCEIVED_SEVERITY { get; set; }

        public string ALARM_TYPE { get; set; }

        public string PROBABLE_CAUSE { get; set; }

        public string SPECIFIC_PROBLEM { get; set; }

        public string ADDITIONAL_TEXT { get; set; }
    }
}

3、数据读取到List集合

        /// <summary>
        /// 读取告警转换为集合
        /// </summary>
        private IList<AlarmEntities3GZte> Alarm2AlarmEntities3GZte()
        {
            IList<AlarmEntities3GZte> list = new List<AlarmEntities3GZte>();
            try
            {
                TaskConfig.SpanTime = Stopwatch.StartNew();
                var reAlarmFiles = Directory.GetFiles(TaskConfig.SavePath, TaskConfig.FileMatch);

                AlarmEntities3GZte alarm = null;

                ], Encoding.Default);
                foreach (string line in lines)
                {
                    )
                    {
                        alarm = new AlarmEntities3GZte();
                    }

                    if (line != null && !"".Equals(line.Trim()))
                    {
                        alarm = Line2Property(line, alarm);
                    }

                     && alarm != null)
                    {
                        list.Add(alarm);
                    }
                }

                WriteMessage.PrintMassage(MessageType.Success, String.Format("解析中兴告警文件成功,共解析出小区发生不同告警数据量:{0} 条,总数据量为:{1} 条,共耗时:{2}毫秒"
                    , list.Count, list.Count, TaskConfig.SpanTime.ElapsedMilliseconds));
            }
            catch (Exception ex)
            {
                WriteMessage.PrintMassage(MessageType.Error, String.Format("解析中兴告警文件失败,错误信息:{0}", ex));
                Environment.Exit(-);
            }
            return list;
        }

        private AlarmEntities3GZte Line2Property(string line, AlarmEntities3GZte alarm)
        {

            if (alarm == null)
            {
                alarm = new AlarmEntities3GZte();
            }
            System.Reflection.PropertyInfo[] properties = alarm.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);

            )
            {
                return alarm;
            }
            foreach (System.Reflection.PropertyInfo item in properties)
            {
                string name = item.Name;
                object value = item.GetValue(alarm, null);
                )
                {
                    item.SetValue(alarm, line.Replace(name + "=", ""), null);
                    break;
                }
            }

            return alarm;
        }

读取中兴3G告警log告警文件到集合的更多相关文章

  1. 2018.2.12 PHP 如何读取一亿行的大文件

    PHP 如何读取一亿行的大文件 我们可能在很多场景下需要用 PHP 读取大文件,之后进行处理,如果你没有相关的经验可以看下,希望能给你带来一些启发. 模拟场景 我们有一个 1亿 行,大小大概为 3G ...

  2. [转]Android输出Log到文件

    前言:开发中遇到mx4这款机型Eclipse联调不上,logcat看不了,需要输出生成文件查看调试信息.网上搜了下,功能很完善了.startService和过滤输出信息需要自己添加设置,另外注意添加权 ...

  3. [转]读取assets目录下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  4. Android将Log写入文件

    为什么要将Log写入文件 运行应用程序的时候,大多数是不会连接着IDE的: 而当应用程序崩溃时,我们需要收集复现步骤,在设备上复现,并进行Debug: 而由于Android手机的多样性,有些问题是某个 ...

  5. .net core 读取本地指定目录下的文件

    项目需求 asp.net core 读取log目录下的.log文件,.log文件的内容如下: xxx.log ------------------------------------------beg ...

  6. SpringBoot读取Linux服务器某路径下文件\读取项目Resource下文件

    // SpringBoot读取Linux服务器某路径下文件 public String messageToRouted() { File file = null; try { file = Resou ...

  7. 前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输

    HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...

  8. 面试题-python 如何读取一个大于 10G 的txt文件?

    前言 用python 读取一个大于10G 的文件,自己电脑只有8G内存,一运行就报内存溢出:MemoryError python 如何用open函数读取大文件呢? 读取大文件 首先可以自己先制作一个大 ...

  9. ubuntu /var/log/下文件介绍

    本文简单介绍ubuntu /var/log/下各个日志文件,方便出现错误的时候查询相应的log   /var/log/alternatives.log -更新替代信息都记录在这个文件中 /var/lo ...

随机推荐

  1. java实现电脑远程控制完整源代码(转)

    Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制.本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并 ...

  2. Mylyn

    Mylyn(旧称Mylar)是eclipse的一个插件,用于将任务管理和上下文管理无缝集成到Eclipse中.1. 安装 下载相应的Mylyn zip包,解压缩开就是两个文件夹:features和pl ...

  3. Windows Azure 社区新闻综述(#76 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 ·   更新 Windows Azure 中的 SQ ...

  4. Windows Azure 社区新闻综述(#75 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 ·   PowerShell 对 Windows A ...

  5. 深入探究VC —— 资源编译器rc.exe(3)

    Windows应用程序中,图标.菜单.畏途.图标.工具条.对话框等是以资源的形式存在的.开发人员也可以自定义资源类型.如果一个程序使用了资源,那么它在构建时需要对资源进行编译.程序所使用的资源会在资源 ...

  6. poj3070

    矩阵第一题.也是矩阵的模板题.下面是模板. 比较重要的是,矩阵的乘法会有很多很神奇的用法.比如如下几个网站所讲. http://www.matrix67.com/blog/archives/276  ...

  7. BZOJ 2809: [Apio2012]dispatching( 平衡树 + 启发式合并 )

    枚举树上的每个结点做管理者, 贪心地取其子树中薪水较低的, 算出这个结点为管理者的满意度, 更新答案. 用平衡树+启发式合并, 时间复杂度为O(N log²N) ------------------- ...

  8. Android存储之SQLiteDatbase

    SQLiteDatabase的方式会生成一个数据库文件,每个应用最多只对应一个数据库文件,即.db文件. 可以使用很多第三方工具进行打开,查看数据库里的内容. 昨晚试了好几种工具,如navicat,s ...

  9. html5 学习笔记

    一.ie8及以下对html5相关语义标签的支持 <!-[if lt IE9]> <script src="html5.js"></script> ...

  10. pay包注释(二)

    @login_required()def to_register(request):    return render_to_response("pay/register_yeepay.ht ...