도움이 필요하며 텍스트 파일을 읽는 방법을 쓰고 있으며 예외가 발생하면 텍스트 파일에 줄을 추가합니다. 예컨대 "**"줄 찾기 i 텍스트 파일
그래서 내가 알아야 할 내가 들여다 방법 또는 무언가 같이, 텍스트 파일의 모든 라인을 읽지 않고 텍스트 파일에서 텍스트의 특정 라인을 확인 할 수있는 방법입니다.
도움을 주시면 감사하겠습니다.
미리 감사드립니다.
도움이 필요하며 텍스트 파일을 읽는 방법을 쓰고 있으며 예외가 발생하면 텍스트 파일에 줄을 추가합니다. 예컨대 "**"줄 찾기 i 텍스트 파일
그래서 내가 알아야 할 내가 들여다 방법 또는 무언가 같이, 텍스트 파일의 모든 라인을 읽지 않고 텍스트 파일에서 텍스트의 특정 라인을 확인 할 수있는 방법입니다.
도움을 주시면 감사하겠습니다.
미리 감사드립니다.
을 줄을 읽었으므로 마지막 줄을 읽는 방법을 만들었습니다. 아래 참조 :
public string ReadLastLine(string path)
{
string returnValue = "";
FileStream fs = new FileStream(path, FileMode.Open);
for (long pos = fs.Length - 2; pos > 0; --pos)
{
fs.Seek(pos, SeekOrigin.Begin);
StreamReader ts = new StreamReader(fs);
returnValue = ts.ReadToEnd();
int eol = returnValue .IndexOf("\n");
if (eol >= 0)
{
fs.Close();
return returnValue .Substring(eol + 1);
}
}
fs.Close();
return returnValue ;
}
당신은 Any
와 함께 File.ReadLines
를 사용할 수 있습니다
bool isExcFile = System.IO.File.ReadLines(path).Any(l => l == "**");
방법과 같이 다른 readlines 메쏘드와 ReadAllLines은 다음과 같습니다 당신이 readlines 메쏘드를 사용하면 전체 컬렉션을하기 전에 문자열의 컬렉션을 열거 시작할 수 있습니다 반환됩니다; ReadAllLines를 사용하는 경우 배열 에 액세스하기 전에 문자열의 전체 배열이 반환되기를 기다려야합니다. 따라서 매우 큰 파일로 작업 할 때 ReadLines가 더 효율적일 수 있습니다.
특수 마커가있는 위치의 색인 (예 : 쉼표로 구분)을 사용하여 별도의 파일을 유지해야합니다. 그런 다음 해당 인덱스 만 읽고 Seek 메서드를 사용하여 파일 스트림의 해당 지점으로 건너 뛸 수 있습니다.
파일이 상대적으로 작 으면 < 50MB가 과도하다고합니다. 인덱스 파일을 유지 관리하는 것보다 더 많은 작업을 수행 할 수 있습니다. 기본적으로 각 행의 파일 스트림에서 읽는 것만으로 여분의 IO 호출 (인덱스 파일 읽기)의 성능을 측정해야합니다.
일부 파일을 처리하고 처리 후에 파일의 모든 행을 읽지 않고 "**"기호가 포함 된 파일을 찾습니다.
당신은 추가 할 경우 "**"당신은 같은 것을 할 수있는 파일의 끝 : 나는 파일에 추가 한 행은 항상 마지막이 될 것입니다, 나는 해결책을 발견
using (StreamReader sr = new StreamReader(File.OpenText(fileName)))
{
sr.BaseStream.Seek(-3, SeekOrigin.End);
string endToken = sr.ReadToEnd();
if (endToken == "**\n")
{
// if needed, go back to start of file:
sr.BaseStream.Seek(0, SeekOrigin.Begin);
// do something with the file
}
}
파일이 적당히 작 으면 메모리에로드 할 이유가 없습니다. 귀하의 컴퓨터는 아마도 캐시 메모리에있는 몇 MB의 데이터를 처리 할 수 있습니다. – Default
처음에 파일을 처리 한 후 나중에 해당 텍스트 행을 확인 하시겠습니까? – Nick
@ johnnie - 왜 그렇게하고 싶습니까? 일반적으로 파일을 읽을 때 일반적으로 읽고있는 파일을 그대로두고 두십시오. – abhilash