Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- namespace LogViewer.Helpers
- {
- public class FileReaderHelper
- {
- public static List<string> ReadEndFile(string fileName, long startingOffset, out long endingOffset)
- {
- List<string> resultList = new List<string>();
- long read_size = 1024 * 5; //500K
- using (var fstream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
- {
- if (startingOffset == fstream.Length)
- {
- //no changes
- endingOffset = startingOffset;
- return resultList;
- }
- else if (startingOffset > fstream.Length)
- startingOffset = fstream.Length - read_size;
- else if (startingOffset == 0)
- {
- if (fstream.Length > read_size)
- startingOffset = fstream.Length - read_size;
- }
- //seek to near end of file
- fstream.Seek(startingOffset, SeekOrigin.Begin);
- //read last part of file
- byte[] buffer = new byte[read_size];
- int read = fstream.Read(buffer, 0, buffer.Length);
- string data = null;
- if (read > 0)
- data = Encoding.ASCII.GetString(buffer);
- endingOffset = fstream.Length;
- string[] lines = data.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- foreach (string line in lines)
- {
- if (String.IsNullOrWhiteSpace(line))
- continue;
- resultList.Add(line);
- }
- }
- return resultList;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment