public static string ReadEndTokens(string path, Int64 numberOfTokens, Encoding encoding, string tokenSeparator)
{
int sizeOfChar = encoding.GetByteCount("\n");
byte[] buffer = encoding.GetBytes(tokenSeparator);
using (FileStream fs = new FileStream(path, FileMode.Open))
{
Int64 tokenCount = 0;
Int64 endPosition = fs.Length / sizeOfChar;
for (Int64 position = sizeOfChar; position < endPosition; position += sizeOfChar)
{
fs.Seek(-position, SeekOrigin.End);
fs.Read(buffer, 0, buffer.Length);
if (encoding.GetString(buffer) == tokenSeparator)
{
tokenCount++;
if (tokenCount == numberOfTokens)
{
byte[] returnBuffer = new byte[fs.Length - fs.Position];
fs.Read(returnBuffer, 0, returnBuffer.Length);
return encoding.GetString(returnBuffer);
}
}
}
// handle case where number of tokens in file is less than numberOfTokens
fs.Seek(0, SeekOrigin.Begin);
buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
return encoding.GetString(buffer);
}
}
'개발 > C#' 카테고리의 다른 글
C# 패널 스크롤바 키보드로 움직이기 (0) | 2019.07.09 |
---|---|
C# 에서 배치 파일 만들기 (0) | 2019.05.23 |
C# 압축파일에서 압축풀지 않고 이미지 가져오기 (0) | 2019.04.29 |
C# [미디어] 코덱 (0) | 2019.04.23 |
C# [시스템] delay 함수 (0) | 2019.03.23 |
C# [정규식] 문자열 추출 (0) | 2019.03.21 |
C# Html to pdf 변환 (0) | 2018.11.20 |
C# 웹브라우저 메모리 누수 (0) | 2018.06.08 |