0

我对这一切都很陌生,但我觉得我已经接近完成这项工作了,我只需要一点帮助!我想创建一个 DLL,它可以读取并返回在另一个应用程序中打开的文件中的最后一行。这就是我的代码的样子,我只是不知道在 while 语句中放什么。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace SharedAccess
{
    public class ReadShare {
        static void Main(string path) {

            FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            StreamReader reader = new StreamReader(stream);

            while (!reader.EndOfStream)
            {
                //What goes here?
            }
        }
    }
}
4

2 回答 2

3

要阅读最后一行,

var lastLine = File.ReadLines("YourFileName").Last();

如果是大文件

public static String ReadLastLine(string path)
{
    return ReadLastLine(path, Encoding.ASCII, "\n");
}
public static String ReadLastLine(string path, Encoding encoding, string newline)
{
    int charsize = encoding.GetByteCount("\n");
    byte[] buffer = encoding.GetBytes(newline);
    using (FileStream stream = new FileStream(path, FileMode.Open))
    {
        long endpos = stream.Length / charsize;
        for (long pos = charsize; pos < endpos; pos += charsize)
        {
            stream.Seek(-pos, SeekOrigin.End);
            stream.Read(buffer, 0, buffer.Length);
            if (encoding.GetString(buffer) == newline)
            {
                buffer = new byte[stream.Length - stream.Position];
                stream.Read(buffer, 0, buffer.Length);
                return encoding.GetString(buffer);
            }
        }
    }
    return null;
}

我在这里提到, 如何只读取大文本文件的最后一行

于 2014-04-10T17:27:59.177 回答
0

文件 ReadLines 应该适合你。

var value = File.ReadLines("yourFile.txt").Last();
于 2014-04-10T17:34:03.327 回答