C# 读取文件夹中的文件

目录

IO 流是什么

C# 代码


        本文使用 C# 的流操作,实现对指定文件夹路径下的文件进行读取与判断,并将符合条件的结果存入 Oracle 数据库。

IO 流是什么

        IO流_百度百科

        流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。

        简单来说就是通过 IO 流的方式,实现对文件的一系列操作,例如复制、删除等基本功能,一般来说高级语言都会有相应封装好的方法以供直接调用。

C# 代码

 using Oracle.DataAccess.Client;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Text;
 
 namespace GetLogValues2
 {
     class Program
     {
         static void Main(string[] args)
         {
             // 需要读取的路径
             string contentPath = "D:\\AllLogs\\";
             DirectoryInfo di = new DirectoryInfo(contentPath);
 
             FileInfo[] ff = di.GetFiles("*.log");// 读取的文件类型
 
             string sFileName;// 完整目录
 
             int i = 1;// 文件个数
             Console.WriteLine("执行期间,请勿对文件夹内部文件 移动 / 复制 / 删除 / 插入!");
             Console.WriteLine("\t按回车键开始");
             Console.ReadKey();
             Console.WriteLine("\t现在开始");
             if (ff.Count() > 0)// 如果该目录下 log 文件个数不小于0
             {
                 foreach (FileInfo temp in ff)// 遍历文件夹下所有 log 文件
                 {
                     Stopwatch sw = new Stopwatch();
                     sw.Restart();// 计时开始
 
                     sFileName = contentPath + temp.ToString();// 完整目录赋值
                     List<string> ls = ReadDocument(sFileName);// 遍历一个文件
 
                     if (ls.Count <= 0)
                     {
                         Console.WriteLine("无符合条件的文件,按回车键结束!");
                         Console.ReadKey();// 等待用户输入
                         Process.GetCurrentProcess().Kill();// 此方法完全奏效,绝对是完全退出。
                     }
 
                     insertSQL(ls);// List 中数据存入数据库
                     Console.WriteLine("已完成第 " + i + " 个 ,剩余 " + (ff.Count() - i) + " 个");
                     i++;
 
                     sw.Stop();// 计时结束
                     Console.WriteLine("\t耗时 " + sw.ElapsedMilliseconds + " ms");
                 }
                 Console.ReadKey();
             }
             else
             {
                 Console.WriteLine("该目录:" + contentPath + " 下无设定的文件,按回车键结束!");
                 Console.ReadKey();// 等待用户输入
                 Process.GetCurrentProcess().Kill();// 此方法完全奏效,绝对是完全退出。
             }
 
         }
 
         //读取文件,并返回文件中的内容
         public static List<string> ReadDocument(string sFileName)
         {
             // 创建 List 用于存储结果,List 会自动扩容,不使用数组(数组无法自动扩容)
             List<string> list = new List<string>();
 
             // 注册字符集编码
             Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
             // 创建一个 StreamReader 的实例来读取文件,using 语句也能关闭 StreamReader
             using (StreamReader sr = new StreamReader(sFileName, Encoding.GetEncoding("gb2312")))// 使用 gb2312 编码,否则中文字符会乱码
             {
                 string line;
                 // 从文件读取并显示行,sr.ReadLine() 读取下一行
                 while ((line = sr.ReadLine()) != null)
                 {
                     // 根据判定条件筛选
                     if (line.IndexOf("开始") >= 0)
                     {
                         list.Add(line);
                     }
                 }
             }
             return list;
 
         }
 
         public static void insertSQL(List<string> lists)
         {
 
             string status;// 状态
             string start_time;// 开始时间
             string end_time;// 结束时间
             string sSql;
 
             status = "";
             start_time = "";
             end_time = "";
             // sql 语句,与下方的 paramATIO 相对应
             sSql = @"insert into students (start_time,end_time,status) values (:starttime,:endtime,:status)";
 
             // 对于以下情况不予插入数据库:status == "Failure" : 失败的结果
             if (status == "Failure") { }
             else
             {
                 // sql 赋值
                 OracleParameter[] paramATIO = new OracleParameter[] {
                             new OracleParameter(":starttime",start_time),
                             new OracleParameter(":endtime",end_time),
                             new OracleParameter(":status",status)
                         };
                 OracleHelper.ExecuteNonQuery(sSql, paramATIO);// 执行sql
             }
 
         }
     }
 }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值