`
chenp1111
  • 浏览: 241976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C# 读写文件的工具类

    博客分类:
  • C#
 
阅读更多
主要包含解析文件,读具体几行,向后插入行,重新覆盖文件等方法

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

namespace pregnancy_autoupdate.utils
{
    class TxtUtil
    {
        private   int   _LineNumber; 
        private   string   _FilePath; 

        ///   <summary> 
        ///   文件总行数 
        ///   </summary> 
        public   int   LineNumber 
        { 
        get{return   this._LineNumber;} 
        } 

        ///   <summary> 
        ///   文件路径 
        ///   </summary> 
        public   string   FilePath 
        { 
        get{return   this._FilePath;} 
        } 

        private   ArrayList   fileLine;

        /// <summary>
        /// 读取文件到ArrayList里面去,按照行号排列 
        /// </summary>
        /// <param name="FilePath"></param>
        public TxtUtil(string FilePath)
        {
            this._FilePath = FilePath;
            StreamReader sr = new StreamReader(new FileStream(FilePath, FileMode.OpenOrCreate), Encoding.GetEncoding("UTF-8"));
            fileLine = new ArrayList();
            int i = 0;
            while (sr.Peek() > -1) {
                fileLine.Insert(i,sr.ReadLine());
                i = i + 1;
            
            }
            this._LineNumber = i;
            sr.Close();
        }

        ///   <summary> 
        ///   返回某一行的内容 
        ///   </summary> 
        ///   <param   name= "LineIndex "> </param> 
        ///   <returns> </returns> 
        public string ReadLine(int LineIndex)
        {
            return this.fileLine[LineIndex].ToString();
        }

        public List<String> readLastLineContent(int lastLineNumber) 
        {
            List<String> contents = new List<String>();
            int start = 0;
            int end = this._LineNumber - 1;
            if (lastLineNumber < this._LineNumber)
            {
                end = lastLineNumber - 1;

            }
            for (int i = start; i <= end; ++i)
            {
                contents.Add(ReadLine(i));
            }
            return contents;
        }

        ///   <summary> 
        ///   拿最后几行的数据,如果总行数不够,就拿文件的所有内容
        ///   </summary> 
        public List<LogTxt> readLastLineLogTxt(int lastLineNumber)
        {
            List<LogTxt> logTxts = new List<LogTxt>();
            int start = this._LineNumber - 1;
            int end = 0;
            if (lastLineNumber < this._LineNumber)
            {
                end = this._LineNumber - lastLineNumber;

            }
             for (int i = start; i >= end; --i)
                {
                    string content = ReadLine(i);
                    string[] ss = content.Split('#');
                    string logDate = ss[0];
                    string logConent = ss[1];

                    LogTxt logTxt = new LogTxt();
                    logTxt.LogDateTime = Convert.ToDateTime(logDate);
                    logTxt.LogContent = logConent;

                    logTxts.Add(logTxt);
                }
            return logTxts;
        }


        ///   <summary> 
        ///   插入某行到某处 
        ///   </summary> 
        public void InsertLine(int LineIndex, string LineValue)
        {
            if (LineIndex <= this._LineNumber)
            {
                this.fileLine.Insert(LineIndex, LineValue);
            }
            else
            {
                this.fileLine.Insert(this._LineNumber, LineValue);
                this._LineNumber += 1;
            }
        }

        ///   <summary> 
        ///   插入最后一行数据
        ///   </summary> 
        public void InsertLine(string LineValue)
        {
            this.fileLine.Insert(this._LineNumber, LineValue);
            this._LineNumber += 1;
        }

        ///   <summary> 
        ///   覆盖原文件 
        ///   </summary> 
        public void Save()
        {
            StreamWriter sw = new StreamWriter(this._FilePath);
            for (int i = 0; i < this.fileLine.Count; i++)
            {
                sw.WriteLine(this.fileLine[i]);
            }
            sw.Close();
        } 


    }
}


分享到:
评论

相关推荐

    C# 文件工具类 文件读写 复制 删除 创建文件夹

    C# 文件工具类 实际项目使用 久经考验 文件读写 复制 删除 创建文件夹 判断文件扩展名等等

    C#读写配置文件(附源代码)

    通过理解和掌握C#读写配置文件的技巧,开发者能够更好地适应应用程序的需求变化,同时保持代码的灵活性和可维护性。提供的源代码是一个很好的起点,可以帮助初学者理解这一过程,并为他们自己的项目提供灵感。

    C#读写App.config的工具类

    C#读写App.config的工具类

    c# 读写配置文件 ini

    以上就是关于C#读写INI配置文件的一些核心知识点,通过理解这些,你可以创建自己的INI文件操作类,或者理解和使用提供的"ClassLibrary"压缩包中的类。记住,编写此类工具时,应注重代码的可读性、可维护性和错误处理...

    C# ini文件操作工具类 亲测可用 超详细 带说明文档

    为了在C#中操作ini文件,我们可以创建一个工具类,如`LToolIni`,这个类可以封装各种ini文件操作方法。以下是一些核心方法的实现概览: 1. **读取ini文件**: - `GetAllSections()`:返回ini文件中的所有节。 - `...

    C# Util 实用工具类

    File工具类可能包含了读写文件、目录操作、文件搜索等功能,简化了文件系统交互的过程。 8. **Win.Util**: 由于提到了"Win.Util",我们可以推测这可能是针对Windows平台的特定工具类,可能包含了一些与Windows API...

    C#工具类库类库 包含所有的常用工具类

    标题中的"C#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...

    C# 常用工具类 日志操作(log4net) 配置管理、字符串工具、DateTime工具、图片工具、文件工具、加密工具 等

    6. **文件工具**: 文件工具类提供了对文件系统的操作,例如创建、删除、移动、复制文件,读写文件内容,以及检查文件是否存在等。这些方法能够帮助简化文件操作,提高代码的健壮性。 7. **加密工具**: 加密工具类...

    C# 读写netCDF 文件

    总的来说,C#结合`netCDF4.dll`库为.NET开发者提供了方便的工具来读写netCDF文件,这使得处理科学数据变得更加高效和便捷。通过熟练掌握这些技术,你可以轻松地在C#项目中管理和分析大量的多维度数据。

    C#操作ACCESS数据库,MDB文件读写

    下面将详细阐述如何使用C#进行Access数据库的读写操作。 首先,为了在C#中连接到Access数据库,我们需要引用System.Data.OleDb命名空间,这个命名空间包含了与OLE DB相关的类,如OleDbConnection、OleDbCommand和...

    使用C#读写dxf文件

    3. **文件读写操作**:在C#中,可以使用`System.IO`命名空间下的类如`StreamReader`和`StreamWriter`进行文件读写。读取DXF文件时,需要解析文件中的ASCII数据并转换为内部表示;写入时,则需要将内部数据结构转换回...

    C#.net常用工具类,全部源码

    在C#.NET中,这样的工具类往往以静态类的形式存在,例如`System.IO`中的`File`和`Directory`类,它们提供了读写文件、操作目录的方法。 此资源包包含的“全部源码”意味着开发者可以直接查看和修改这些工具类的内部...

    C#进行dat文件读写操作

    在处理各种数据文件时,C#提供了丰富的类库和方法,使得对不同格式的文件进行读写操作变得简单易行。本篇文章将详细探讨如何在C#中对dat文件进行读写操作,以及与CSV或txt文本文件的交互。 1. **C# CSV或txt文本...

    c#读写文件功能代码

    在C#编程语言中,读写文件是一项基本且...综上所述,C#提供了强大而灵活的工具来处理文件读写,并结合字符串操作,能够满足各种数据处理需求。通过熟练掌握这些基础技能,开发者可以构建高效、稳定的文件系统应用程序。

    C#常用工具类代码集合Util(自己工作总结)

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。"MJ.Util"、"MJ.Util.Extension"和"MJ.Util.Model"这三个文件名暗示了这个压缩包可能包含了C#中的...

    Netdxf C#读写dxf文件

    总结来说,Netdxf库为.NET开发者提供了强大的工具,使他们能够在C#环境中方便地进行DXF文件的读写。通过深入理解和应用这个库,开发者可以创建出功能丰富的CAD应用程序,满足各种定制化的图形数据处理需求。

    C#ini配置读写

    在C#中,没有内置的类或方法直接支持INI文件操作,但我们可以利用`System.IO.File`类和其他辅助方法来实现读写功能。以下是一些关键步骤: 1. **读取INI文件**:使用`File.ReadAllText`方法读取整个文件内容,然后...

    C#文件的读写c#基础中文件读写课程中一些常用类

    总之,C#提供了强大且易用的文件操作工具,通过`System.IO.File`和`System.IO.FileInfo`类,开发者能够方便地完成文件的读写、创建、删除、复制和移动等一系列操作,从而满足各种应用程序的需求。在实际编程中,结合...

    读写shp文件的动态库,封装成dotnet,c#可直接调用。

    本文将深入探讨如何利用封装好的DotNet库在C#环境中读写SHP文件,以及相关的关键知识点。 首先,SHP文件是由一系列相互关联的文件组成,包括.shp(几何数据)、.dbf(属性数据)和可能的.shx(索引)等。`shapelib`...

    C#基类工具类

    "C#基类工具类"是为开发者提供的一组通用功能的集合,通常包含一系列静态方法或者基类,以简化常见的编程任务。这些工具类可以极大地提高代码的复用性和开发效率。下面我们将详细探讨这些知识点。 1. **IO流处理**...

Global site tag (gtag.js) - Google Analytics