스트림 판독기를 사용하여 C#에서 파일을 여는 동안 파일을 닫을 때까지 메모리에 남아 있습니다. 예를 들어, 파일의 끝에 한 줄을 추가하기 위해 streamreader를 사용하는 프로그램이 크기가 6MB 인 파일을 열 경우. 파일이 닫힐 때까지 프로그램이 전체 메모리를 6MB로 유지합니까? OR는 .Net 코드에 의해 내부적으로 반환 된 파일 포인터이며 끝에 라인이 추가됩니다. 따라서 6MB 메모리는 프로그램에 의해 사용되지 않습니다.파일 열기 메모리 C#
답변
에서는 StreamReader 파일을 열하여 FileStream을 사용하여 언급 한 사람으로 버퍼링 및 OS 캐싱을 계산하지. FileStream은 CreateFile() API 함수가 반환 한 Windows 핸들을 저장합니다. 32 비트 운영 체제에서는 4 바이트입니다. FileStream에도 byte [] 버퍼가 있으며, 기본적으로 4096 바이트입니다. 이 버퍼는 모든 단일 읽기 호출에 대해 ReadFile() API 함수를 호출하지 않아도됩니다. StreamReader에는 파일의 텍스트를 더 효율적으로 디코딩 할 수 있도록 작은 버퍼가 있으며 기본적으로 128 바이트입니다. 또한 버퍼 인덱스를 추적하고 BOM이 탐지되었는지 여부를 추적하는 일부 개인 변수가 있습니다.
이 모두가 몇 킬로바이트입니다. StreamReader로 읽은 데이터는 물론 프로그램의 힙에서 공간을 차지합니다. 을 문자열 (예 : 목록)으로 저장하면 최대 12 메가 바이트까지 추가 할 수 있습니다. 당신은 대개 그것을 피하고자합니다.
스트림의 전체 지점은 전체 객체를 메모리에 보유 할 필요가 없도록합니다. 당신은 필요에 따라 조각으로 읽습니다.
파일에 추가하려면 File.AppendText
을 사용해야 파일 끝에 추가되는 StreamWriter
이 생성됩니다.
string path = @"c:\temp\MyTest.txt";
// This text is always added, making the file longer over time
// if it is not deleted.
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine("This");
sw.WriteLine("is Extra");
sw.WriteLine("Text");
}
다시 전체 파일이 메모리에 저장되지 않을 것이다 : 여기
는 일례이다.문서 : http://msdn.microsoft.com/en-us/library/system.io.file.appendtext.aspx
닷넷 FileStream
적은 양의 데이터를 (당신이 생성자의 일부와이 금액을 설정할 수 있습니다) 버퍼됩니다.
Windows OS는 파일의 더 중요한 캐싱을 수행합니다. 충분한 RAM이 있으면 전체 파일 일 수 있습니다.
StreamReader 아니요, 6MB 파일을 메모리로 읽습니다. 또한 StreamReader를 사용하여 파일 끝에 줄을 추가 할 수 없습니다. StreamWriter를 사용할 수도 있습니다.
갱신 : 다른
- 1. Excel 파일 열기 C#
- 2. 솔루션에서 C# 열기 파일
- 3. C# SQLite 파일 열기
- 4. CUDA C에서 파일 열기 C
- 5. C++에서 여러 파일 열기
- 6. C++ : 파일 열기 호출이 실패합니다.
- 7. 여러 파일 열기 (OpenFileDialog, C#)
- 8. C# 목록 상자에서 파일 열기 파일 목록
- 9. 열기 데이터베이스는 메모리
- 10. IE는 파일 자체를 열기 대신 파일 열기
- 11. 플러그인 파일 열기 파일
- 12. 원격 컴퓨터에서 파일 열기
- 13. C# 및 ActiveSync 통신/파일 열기 및 열기
- 14. 강제로 파일 열기
- 15. ScriptingBridge를 사용하여 파일 열기
- 16. 열기 파일 경로 5
- 17. C++ Qt - 텍스트 파일 열기 오류가 발생합니다.
- 18. OpenFileDiaolg에서 아카이브 파일 내용 열기 C#
- 19. C - fopen을 사용하여 함수 내에서 파일 열기
- 20. 파일 열기 및 C#의 문자열 바꾸기
- 21. C++ : 비 독점 모드에서 파일 열기
- 22. 파일 열기 및 C 언어로 출력
- 23. 주소 문자열 배열을 사용하여 C++ 파일 열기
- 24. iPhone에서 글꼴 파일 열기
- 25. 확장자없이 파일 열기
- 26. 직접 파일 열기
- 27. 파일 열기 포인터
- 28. ffmpeg의 파일 열기 오류
- 29. Android 파일 탐색기로 파일 열기
- 30. 파이썬에서 파일 열기 닫기 (바로 가기로 열기)