public string GetLineTextAtOffset(int offset) { FileStream stream = new FileStream (fileName, FileMode.Open, FileAccess.Read); try { ExtendedStreamReader streamReader = new ExtendedStreamReader (new StreamReader (stream)); streamReader.Position = offset; int lastPos; int b; do { lastPos = streamReader.Position; b = streamReader.ReadBack (); } while (b != -1 && b != 10 && b != 13); streamReader.Position = lastPos; StringBuilder sb = new StringBuilder (); b = streamReader.Read (); while (b != -1 && b != 10 && b != 13) { sb.Append ((char)b); b = streamReader.Read (); } return sb.ToString (); } finally { stream.Close (); } }