net核心怎么读取本地指定目录下的文件

  介绍

小编给大家分享一下。net核心怎么读取本地指定目录下的文件,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强>项目需求

asp.net核心读取日志目录下的. log文件,. log文件的内容如下:

xxx。日志

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -开始- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
写入时间:2018-09-11 17:01:48
,用户id=1000
,金牌=10
, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -端- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

一个开始结束为一组,同一个。日志文件里userid相同的,取写入时间最大一组值,所需结果如下:

UserID ,Golds ,RecordDate
, 1001,,,,20,,,,2018/9/11 17:10:48 
, 1000,,,,20,,,,2018/9/11 17:11:48 
, 1003,,,,30,,,,2018/9/11 17:12:48 
, 1002,,,,10个,,,,2018/9/11 18:01:48
, 1001,,,,20,,,,2018/9/12 17:10:48 
, 1000,,,,30,,,,2018/9/12 17:12:48 
, 1002,,,,10个,,,,2018/9/12 18:01:48

<强>项目结构

<强> 啊et核心怎么读取本地指定目录下的文件"

Snai.File.FileOperation 2.0 Asp.net核心网站

<强>项目实现

新建Snai.File解决方案,在解决方案下新建一个名Snai.File。FileOperation Asp.net核心2.0空网站

把日志日志文件拷备到项目下

修改启动类的ConfigureServices()方法,注册访问本地文件所需的服务,到时在中间件中通过构造函数注入添加到中间件,这样就可以在一个地方控制文件的访问路径(也就是应用程序启动的时候)

public  void  ConfigureServices (IServiceCollection 服务)   {   services.AddSingleton (new  PhysicalFileProvider (Directory.GetCurrentDirectory ()));   }

新建中间件文件夹,在中间件下新建实体文件夹,新建UserGolds。cs类,用来保存读取的日志内容,代码如下

namespace  Snai.File.FileOperation.Middleware.Entity   {   public  class  UserGolds   ,{   public 才能;UserGolds ()   {才能   ,,RecordDate =, new  DateTime(1970年,1日,01);   ,,UserID =, 0;   ,,Golds =, 0;   ,,}   public 才能DateTime  RecordDate {组,得到,,,}   public 才能int  UserID {组,得到,,,}   public 才能int  Golds {组,得到,,,}   ,}   }

,在中间件下新建FileProviderMiddleware。cs中间件类,用于读取日志下所有日志文件内容,并整理成所需的内容格式,代码如下

namespace  Snai.File.FileOperation.Middleware   {   public  class  FileProviderMiddleware   ,{   private 才能readonly  RequestDelegate  _next;   private 才能readonly  IFileProvider  _fileProvider;   public 才能FileProviderMiddleware (RequestDelegate 接下来,,IFileProvider  fileProvider)   {才能   ,,_next =,下一个;   ,,_fileProvider =, fileProvider;   ,,}   public 才能;async  Task 调用(HttpContext 上下文)   {才能   ,,var  output =, new  StringBuilder (“;”);   ,,//ResolveDirectory(输出,,,,,,,,);   ,,ResolveFileInfo(输出,“log",,“.log");   ,,await  context.Response.WriteAsync (output.ToString ());   ,,}//读才能取目录下所有文件内容   private 才能;void  ResolveFileInfo (StringBuilder 输出,string 路径,string 后缀)   {才能   ,,output.AppendLine (“UserID  Golds  RecordDate");   ,,IDirectoryContents  dir =, _fileProvider.GetDirectoryContents(路径);   ,,foreach  (IFileInfo  item  dir)拷贝   ,,{   ,,,if  (item.IsDirectory)   ,,,{   ,,,,ResolveFileInfo(输出,   ,,,,,item.PhysicalPath.Substring (Directory.GetCurrentDirectory () . length),   ,,,,,后缀);   ,,,}   ,,,   ,,,{   ,,,,if  (item.Name.Contains(后缀))   ,,,,{   ,,,,,var  userList =, new  List ();   ,,,,,var  user =, new  UserGolds ();   ,,,,,IFileInfo  file =, _fileProvider.GetFileInfo(时间+ path “\ \”, +, item.Name);   ,,,,,using  (var  stream =, file.CreateReadStream ())   ,,,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

net核心怎么读取本地指定目录下的文件