如何在服务器中使用C#更新文件的文本框中添加更新行?

nsivaram90

我试图在日志文件的文本框中添加新行,日志文件会经常更新。我有一个FileSystemWatcher检查文件中是否有任何更新并触发onChange()event的事件。

textbox1.Text = File.ReadAllText(@"D:\Serverlogs\clientList.log");

随着日志大小的增加,此操作将获取整个文件的内容,此操作变得越来越慢。如何读取更新的行而不是整个文件?

服务器会将新登录用户的列表更新到日志中,例如,文件中和文本框中有15行文本,服务器中的每个新日志更新文件后,我只需要阅读第16行线。

安德鲁·贝克

我认为您必须跟踪文件中读取的最后一个位置,然后在检测到更改时:打开文件,查找到正确的位置,然后读取到最后。然后将其解析为几行,以添加到文本框中。

编辑:这是一个工作的控制台应用程序,演示了此。您将需要更多的错误检查,初始化等等。旧代码只是一个猜测,但基本上是正确的。

class Program
{
    static FileSystemWatcher fs = null;
    static string fileName = @"c:\temp\log.txt";
    static long oldPosition = 0;

    static void Main(string[] args)
    {
        fs = new FileSystemWatcher(Path.GetDirectoryName(fileName));
        fs.Changed += new FileSystemEventHandler(fs_Changed);
        fs.EnableRaisingEvents = true;
        Console.WriteLine("Waiting for changes to " + fileName);
        Console.ReadLine();
    }

    static void fs_Changed(object sender, FileSystemEventArgs e)
    {
        if (e.FullPath != fileName || e.ChangeType != WatcherChangeTypes.Changed) return;
        using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        using (StreamReader fr = new StreamReader(fs))
        {
            Console.WriteLine("{0} changed.  Old Postion = {1}, New Length = {2}", e.Name, oldPosition, fs.Length);
            if (fs.Length > oldPosition)
            {
                fs.Position = oldPosition;
                var newData = fr.ReadToEnd();
                Console.WriteLine("~~~~~~ new data ~~~~~~\n" + newData);
                oldPosition = fs.Position;
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从服务器在C#中更新的文件的文本框中添加更新的行?

来自分类Dev

Datagridview列SUM到文本框并使用每个添加的行更新文本框

来自分类Dev

Datagridview列SUM到文本框并使用每个添加的行更新文本框

来自分类Dev

如何在C#中的另一个线程上运行的循环中更新文本框

来自分类Dev

在服务器之间更新文件

来自分类Dev

如何在服务中使用Countdowntimer更新文本

来自分类Dev

如何在现有的tar.gz归档文件中添加/更新文件?

来自分类Dev

如何使用JavaScript更新文本框的背景颜色?

来自分类Dev

使用javascript更新文本框中的值

来自分类Dev

如何从C#更新文件的更改时间?

来自分类Dev

当用户在 Excel 中进行选择时,如何使用范围动态更新文本框。C#

来自分类Dev

如何在Laravel 4中更新文件上传?

来自分类Dev

如何在FileWatcher中更新文件名

来自分类Dev

如何在Git中更新文件写入权限

来自分类Dev

如何在QFileSystemModel中更新文件权限

来自分类Dev

如何在PHP中更新文件

来自分类Dev

如何更新文件中的每一行

来自分类Dev

更新文件中的行

来自分类Dev

如何使用bash更新文件行?

来自分类Dev

在WPF中,如何在主窗口中更新文本框?

来自分类Dev

如何在WPF中单击按钮更新文本框背景色

来自分类Dev

更新文件中的记录(C ++)

来自分类Dev

SVN-如何仅从服务器获取更新文件,而不提交所做的任何本地更改?

来自分类Dev

如何在MVC 2中使用ASP服务器控件,如文本框,按钮,复选框列表网格视图?

来自分类Dev

如何在MVC 2中使用ASP服务器控件,如文本框,按钮,复选框列表网格视图?

来自分类Dev

如何在MVC的文本框中从服务器端设置动态文本

来自分类Dev

如何在MVC的文本框中从服务器端设置动态文本

来自分类Dev

如何在 Bonita Web 服务器中创建一个新文件夹?

来自分类Dev

如何在服务器vb.net中的文本框中获取值

Related 相关文章

  1. 1

    如何从服务器在C#中更新的文件的文本框中添加更新的行?

  2. 2

    Datagridview列SUM到文本框并使用每个添加的行更新文本框

  3. 3

    Datagridview列SUM到文本框并使用每个添加的行更新文本框

  4. 4

    如何在C#中的另一个线程上运行的循环中更新文本框

  5. 5

    在服务器之间更新文件

  6. 6

    如何在服务中使用Countdowntimer更新文本

  7. 7

    如何在现有的tar.gz归档文件中添加/更新文件?

  8. 8

    如何使用JavaScript更新文本框的背景颜色?

  9. 9

    使用javascript更新文本框中的值

  10. 10

    如何从C#更新文件的更改时间?

  11. 11

    当用户在 Excel 中进行选择时,如何使用范围动态更新文本框。C#

  12. 12

    如何在Laravel 4中更新文件上传?

  13. 13

    如何在FileWatcher中更新文件名

  14. 14

    如何在Git中更新文件写入权限

  15. 15

    如何在QFileSystemModel中更新文件权限

  16. 16

    如何在PHP中更新文件

  17. 17

    如何更新文件中的每一行

  18. 18

    更新文件中的行

  19. 19

    如何使用bash更新文件行?

  20. 20

    在WPF中,如何在主窗口中更新文本框?

  21. 21

    如何在WPF中单击按钮更新文本框背景色

  22. 22

    更新文件中的记录(C ++)

  23. 23

    SVN-如何仅从服务器获取更新文件,而不提交所做的任何本地更改?

  24. 24

    如何在MVC 2中使用ASP服务器控件,如文本框,按钮,复选框列表网格视图?

  25. 25

    如何在MVC 2中使用ASP服务器控件,如文本框,按钮,复选框列表网格视图?

  26. 26

    如何在MVC的文本框中从服务器端设置动态文本

  27. 27

    如何在MVC的文本框中从服务器端设置动态文本

  28. 28

    如何在 Bonita Web 服务器中创建一个新文件夹?

  29. 29

    如何在服务器vb.net中的文本框中获取值

热门标签

归档