zoukankan      html  css  js  c++  java
  • 读写日志文件

    日志为文本文件
    每列以制表符隔开 行以换行符隔开

    本次示例简单实现如下相关功能:
    1.正写日志文本 最新的日志放后面
    2.倒写日志文本 最新的日志放前面
    3.读日志文本内容显示在Label
    4.读日志文本内容到DataTable 及 筛选后显示在GridView
    --------------------
    (以下操作并没有考虑相关如文件不存在等异常)

    //1.正写日志 最新日志放最后面
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strFilePath = Server.MapPath("log/log_200807_1.txt");
        System.IO.FileStream fs = new System.IO.FileStream(strFilePath, System.IO.FileMode.Append);
        System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.Default);
        sw.WriteLine("'" + DateTime.Now.ToString() + "' 'zhangsan' 'Login.aspx' '登录A'");
        sw.Close();
        fs.Close();
    }
    //2.倒写日志 最新日志放最前面
    protected void Button2_Click(object sender, EventArgs e)
    {
        string strFilePath = Server.MapPath("log/log_200807_1.txt");
        string strOldText = File.ReadAllText(strFilePath, System.Text.Encoding.Default);
        File.WriteAllText(strFilePath, "'" + DateTime.Now.ToString() + "' 'zhangsan' 'Login.aspx' '登录B' ", System.Text.Encoding.Default);
        File.AppendAllText(strFilePath, strOldText, System.Text.Encoding.Default);
    }

    //3.读日志文本到Label
    protected void Button3_Click(object sender, EventArgs e)
    {
        string strFilePath = Server.MapPath("log/log_200807_1.txt");
        FileStream fs = new FileStream(strFilePath, FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
        string strLine = sr.ReadLine();
        string str = "";
        while (strLine != null)
        {
            str += strLine.ToString() + "<br/>";
            strLine = sr.ReadLine();
        }
        sr.Close();
        fs.Close();
        this.Label1.Text = str;
    }
    //4.读日志文本内容到DataTable及筛选后显示在GridView
    protected void Button4_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("日志时间");
        dt.Columns.Add("操作人员");
        dt.Columns.Add("日志页面");
        dt.Columns.Add("日志内容");
        
        string strFilePath = Server.MapPath("log/log_200807_1.txt");
        FileStream fs = new FileStream(strFilePath, FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
        string strLine = sr.ReadLine();
        
        while (strLine != null)
        {
            string[] strArray = new string[4];
            strArray = strLine.Split(' ');
            DataRow dr = dt.NewRow();
            dr[0] = strArray[0];
            dr[1] = strArray[1];
            dr[2] = strArray[2];
            dr[3] = strArray[3];
            dt.Rows.Add(dr);
            strLine = sr.ReadLine();
        }
        sr.Close();
        fs.Close();
        //筛选
        DataView dv = dt.DefaultView;
        dv.RowFilter = " 日志内容 Like '%A%' and 日志时间 >= '2008-7-8 14:12:50' ";
        //this.GridView1.DataSource = dt;
        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();
    }

    //取得当前所应操作的日志文件的路径 
    private string GetLogFilePath() 

    string strFilePath = ""; 
    string strYearMonth = DateTime.Now.ToString("yyyyMM"); 
    string strLogDirPath = Server.MapPath("log"); 
    //判断当前月份是否已有日志文件 
    string[] strFilesArray = Directory.GetFiles(strLogDirPath, "log_" + strYearMonth + "_*.txt"); 
    if (strFilesArray.Length == 0) 

    strFilePath = Server.MapPath("log/log_" + strYearMonth + "_1.txt"); 
    //之前没有本年月的日志文件 需要新建 
    using (File.Create(strFilePath)) 
    {



    else 

    int intOrderID = 1; 
    for (int i = 0; i < strFilesArray.Length; i++) 

    string strA = strFilesArray[i].Trim(); 
    strA = strA.Substring(strA.LastIndexOf("_")+1); 
    strA = strA.Replace(".txt", ""); 
    int intA = Convert.ToInt32(strA); 
    if (intA > intOrderID) 
    intOrderID = intA; 
    }

    strFilePath = Server.MapPath("log/log_" + strYearMonth + "_" + intOrderID.ToString() + ".txt"); 
    this.Label1.Text = strFilePath; 
    //之前有 需要判断最后一个是否超容 
    FileInfo fileInfo = new FileInfo(strFilePath); 
    if (fileInfo.Length >= 1024) 

    //超容了 新建之 
    int intCount = intOrderID + 1; 
    strFilePath = Server.MapPath("log/log_" + strYearMonth + "_" + intCount.ToString() + ".txt"); 
    using (File.Create(strFilePath)) 
    {




    return strFilePath ; 
    }

    讀寫ini文件 
    [DllImport("kernel32")] 
    private static extern long WritePrivateProfileString(string section, 
    string key,string val,string filePath); 
    [DllImport("kernel32")] 
    private static extern int GetPrivateProfileString(string section, 
    string key,string def, StringBuilder retVal,int size,string filePath);

    public void IniWriteValue(string Section,string Key,string Value,string filePath) 

    WritePrivateProfileString(Section,Key,Value,filePath); 
    public string IniReadValue(string Section,string Key,string filePath) 

    StringBuilder temp = new StringBuilder(255); 
    int i = GetPrivateProfileString(Section,Key,"",temp, 
    255, filePath); 
    return temp.ToString();

    }

    获取指定文件夹的大小 
    public long countsize( System.IO.DirectoryInfo dir) 

    long size=0; 
    FileInfo[] files=dir.GetFiles(); 
    foreach(System.IO.FileInfo info in files) 

    size+=info.Length; 

    DirectoryInfo[] dirs=dir.GetDirectories(); 
    foreach(DirectoryInfo dirinfo in dirs) 

    size+=countsize(dirinfo); 

    return size; 
    }  

    讀取資源檔: 
    ResourceManager _textResManager = new ResourceManager("testproject.MultiLanguage_Eng", Assembly.GetExecutingAssembly()); 
    string resString = _textResManager.GetString("keyname");

  • 相关阅读:
    css应用视觉设计
    HTML中name、id、class的区别介绍
    css怎么选择父元素下的某个元素?
    css权重如何计算的?
    如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招
    分布式缓存Redis应用场景解析
    【云速建站】让你轻轻松松建立属于自己的网店
    一张图读懂什么是专属分布式存储
    【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(2)
    【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)
  • 原文地址:https://www.cnblogs.com/jearay/p/3668975.html
Copyright © 2011-2022 走看看