场景

现在公司的测试环境一些文本日志不让接触,提供一个网络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文件配置:

  <appSettings>
    <add key="txtfilepath" value="http://www.text.com/Info/Info.log"/>
    <add key="getLastLength" value="2048"/>
  </appSettings>

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

.Net快速获取网络文本文件最后一段文字-小应用的更多相关文章

  1. linux 系统获取网络ip, mask, gateway, dns信息小程序

    net_util.c #define WIRED_DEV                   "eth0"     #define WIRELESS_DEV             ...

  2. android开发获取网络状态,wifi,wap,2g,3g.工具类(一)

    android开发获取网络状态整理: package com.gzcivil.utils; import android.content.Context; import android.net.Con ...

  3. QT在linux下获取网络类型

    开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下: 1.这里有一个linux指令:nmcli(大家自行百度即可) 2.nmcli device sta ...

  4. android 获取网络类型名称2G 3G 4G wifi

    首先工程Manifest文件要引用: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ...

  5. iOS 获取网络状态

    在iOS开发者,获取网络状态比较常用 -(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplicat ...

  6. MS SQLSERVER中如何快速获取表的记录总数

    在数据库应用的设计中,我们往往会需要获取某些表的记录总数,用于判断表的记录总数是否过大,是否需要备份数据等.我们通常的做法是:select count(*) as c from tableA .然而对 ...

  7. Android 通过广播获取网络状态

    Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验.          本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请 ...

  8. JS快速获取图片宽高的方法

    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...

  9. Android架构:用消息机制获取网络数据

    网络请求,不管是什么协议,是长连接还是短连接,总是一个异步的请求,过程包括:加请求参数->发起请求->接收响应->解析数据->获得业务数据. 最挫的做法是,业务代码包揽所有这些 ...

随机推荐

  1. 20145329吉东云 《Java程序设计》 第一周学习总结

    一.JAVA平台概述 1.Java诞生于1995年5月23日,java体系架构分为JavaSE.JavaME.JavaEE三大平台,本章重点介绍了JavaSE.JavaSE分为四个主要部分:JVM.J ...

  2. cookie注入原理

    cookie注入原理-->红客联盟 http://www.2cto.com/article/201202/118837.html 前言: document.cookie:表示当前浏览器中的coo ...

  3. Linux下C连接MySql数据库

    目录: 一.解决小的问题: 二.大问题,如果你不小心把/usr/lib的所属用户改了导致sudo命令用不了: 三.C连接MySql编程本身: 其实写这个程序真的很简单,十多分钟的事情,只是以前没在Li ...

  4. Nginx解决post请求405问题

    和工商银行的一个合作项目,对方客户端需要请求我们的一个静态页面,但是客户端发送过来的请求方法用的post,日志显示405错误(请求方法错误),正常一个静态页面直接用get请求就可以了,工行那边说写死了 ...

  5. 一键安装 zabbix 3.0 版本 脚本

    原文地址: http://blog.csdn.net/u012449196/article/details/53859068 本文修改了原文中的部分错误,此脚本适用于zabbix 2.0 或 3.0 ...

  6. scrapy之手机app抓包爬虫

    手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls ...

  7. 【cs231n】神经网络笔记笔记2

    ) # 对数据进行零中心化(重要) cov = np.dot(X.T, X) / X.shape[0] # 得到数据的协方差矩阵 数据协方差矩阵的第(i, j)个元素是数据第i个和第j个维度的协方差. ...

  8. LA 5846 霓虹灯广告牌(单色三角形问题)

    https://vjudge.net/problem/UVALive-5846 题意: 圆周上有n个点,两两相连,只能涂红色或蓝色.求单色三角形的个数. 思路: 这个问题在训练指南105页有详细讲解. ...

  9. LA 3523 圆桌骑士(二分图染色+点双连通分量)

    https://vjudge.net/problem/UVALive-3523 题意: 有n个骑士经常举行圆桌会议,商讨大事.每次圆桌会议至少应有3个骑士参加,且相互憎恨的骑士不能坐在圆桌旁的相邻位置 ...

  10. php入门(三)

    PHP 面向对象: 在php5中 var就是public的别名. 变量 $this 代表自身的对象. PHP_EOL;为换行符 构造函数+析构函数 <?php class Site { /* 成 ...