ColinOL

A Small Website

用户工具

站点工具


侧边栏

首页

知识树

存档

联系我

网站地图


推荐栏目


抱歉,您没有权限增加页面
home

ColinOL Home

文件清单目录树制作

操作系统:Windows

命令行输入

tree   /f    /a   >文件.txt

DirSnap生成

(未验证)使用软件DirSnap很简单就可生成,操作方便。

DirTree生成

(未验证)使用软件DirTree很简单就可生成,操作方便。

2019/12/17 02:42 · colin

C# 快速提取文本文件最后一行数据

提取文本最后一行数据的方法

/// <summary>
/// 提取文本最后一行数据
/// </summary>
/// <param name="fs">文件流</param>
/// <returns>最后一行数据</returns>
private string GetLastLine(FileStream fs)
{
    int seekLength = (int)(fs.Length < 1024 ? fs.Length : 1024);  // 这里需要根据自己的数据长度进行调整,也可写成动态获取,可自己实现
    byte[] buffer = new byte[seekLength];
    fs.Seek(-buffer.Length, SeekOrigin.End);
    fs.Read(buffer, 0, buffer.Length);
    string multLine = System.Text.Encoding.UTF8.GetString(buffer);
    string[] lines = multLine.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries);
    string line = lines[lines.Length - 1];
 
    return line;
}

使用方法

using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(fs))
{
    // 读取首行
    string line = sr.ReadLine();
    SDataAircraft data = JsonWrapper.DeserializeObject<SDataAircraft>(line);
 
    if (data == null)
    {
        sr.Close();
        fs.Close();
        continue;
    }
 
    info.StartTime = Convert.ToDateTime(data.timeStamp);
 
    // 读取末行                    
    line = GetLastLine(fs);
 
    //...
 
    sr.Close();
    fs.Close();
}

另外,在同时读写同一个文件时,需要设置文件流的FileShare.ReadWrite:

写文件:

using (FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter sw = new StreamWriter(fs))
{
    sw.WriteLine(data);
    sw.Close();
    fs.Close();
}

读文件:

using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(fs))
{
    // 读取首行
    string line = sr.ReadLine();
    //...
 
    sr.Close();
    fs.Close();
}

参考:

2019/10/24 10:34 · colin
home.txt · 最后更改: 2019/10/06 11:49 由 colin