博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net快速获取网络文本文件最后一段文字-小应用
阅读量:6201 次
发布时间:2019-06-21

本文共 2573 字,大约阅读时间需要 8 分钟。

场景

现在公司的测试环境一些文本日志不让接触,提供一个网络http服务器让人直接访问,这文件大时,一般10MB一个文件,不在同一局域网,网速限制200K,要等很久,访问很慢。

.Net代码请求文本文件最新内容(类似于tail文件)

namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            while (true)            {                //var FileLength = 0L;                //var sPosstion = 0;                int CompletedLength = 0;                var filePath = ConfigurationManager.AppSettings["txtfilepath"].ToString();                Console.WriteLine("网络txt文件路径:{0}", filePath);                var lengthRequest = (HttpWebRequest)HttpWebRequest.Create(filePath);                lengthRequest.Method = "HEAD";//只获取文件头,不获取内容,速度快                var ContentLength = ((HttpWebResponse)lengthRequest.GetResponse()).ContentLength;                try                {                    lengthRequest.Abort();                }                catch (Exception ex)                {                    Console.WriteLine(ex.Message);                }                var getLastLength = Convert.ToInt32(ConfigurationManager.AppSettings["getLastLength"].ToString());                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(filePath);                if (ContentLength > getLastLength)                {                    myRequest.AddRange((int)(ContentLength - getLastLength));//设置Range值                }                //向服务器请求,获得服务器的回应数据流                HttpWebResponse webResponse = (HttpWebResponse)myRequest.GetResponse();                //FileLength = webResponse.ContentLength + sPosstion;//文件大小=已下载的+服务器返回的                Stream myStream = webResponse.GetResponseStream();                byte[] btContent = new byte[getLastLength];                //Save();//保存下载信息                if ((CompletedLength = myStream.Read(btContent, 0, getLastLength)) > 0)                {                    Console.WriteLine(Encoding.UTF8.GetString(btContent));                    // FStream.Write(btContent, 0, CompletedLength);                    //DownloadedLength += CompletedLength;                    //if (BeStop == true) break;                }                else                {                    Console.WriteLine("无内容");                }                //FStream.Close();                myStream.Close();                Console.WriteLine("最后刷新时间:"+DateTime.Now.ToString("yyyy-MM-dd HH:m:ss.fff"));                Console.WriteLine("\r\n---------按任意键刷新----------");                Console.ReadKey();                Console.Clear();            }        }    }}

config文件配置:

运行效果,不到1秒就出来了,刷新快

这里写图片描述

你可能感兴趣的文章
单元测试规范
查看>>
使用WinHex
查看>>
简单的使用CocoaPods集成ShareSDK
查看>>
golang源码包阅读 bytes
查看>>
Android studio再改程序代码压缩器轻松提升程序代码压缩速度
查看>>
go语言学习笔记(9)通道进阶
查看>>
通俗易懂理解ES6 - ES6的变量类型及Iterator
查看>>
解决iOS表单列表键盘遮挡的问题
查看>>
容器Docker学习系列五~命令学习history,save, import
查看>>
我对JavaScript中this的一些理解
查看>>
01 iOS中Block的基础用法
查看>>
谈谈 MyBatis 的插件化设计
查看>>
页面可视化搭建工具前生今世
查看>>
UX设计秘诀之注册表单设计,细节决定成败
查看>>
前端通过post访问后端,后端断点断不住(没有收到request请求)
查看>>
ajax的请求方式(get和post的区别)?
查看>>
深度解读Helm 3: 犹抱琵琶半遮面
查看>>
Gson字符串数组转成List对象(泛型、Kotlin)
查看>>
dataX的入门到入土
查看>>
T-Tree、T*-Tree的理解与简单内存数据库的实现
查看>>