2012-09-22 4 views
0

특정 순간에 임시 파일을 만든 다음 삭제해야하는 응용 프로그램이 있습니다. 그래서 임시 파일을 디스크에 직접 저장하는 대신 메모리에 생성 할 수 있는지 생각하고 있습니다. 그런 다음 몇 가지 작업을 수행하기 위해 메모리에서 읽으 려하고 마침내 일부 작업을 수행 한 후 메모리에서 삭제하십시오. 가능한 경우 .NET Framework 및 C#에서이 작업을 수행하는 방법입니다. 또한 성능은 디스크가 아닌 직접 메모리를 사용하여 영향을받을 수 있습니까?StreamWriter : 디스크에 직접 쓰지 않고 메모리에 쓸 수있는 방법이 있습니까?

디스크의 일부 장소에 파일을 쓰는 것을 허용하지 않는 일종의 Windows 권한을 두려워하기 때문에 디스크 대신 직접 메모리를 사용하고 싶습니다 ... 그래서 또 다른 의심이 있습니다 : 메모리 대신 디스크를 사용하는 경우 임시 파일을 작성하고 Windows XP, Vista, 7,8에 대한 쓰기 사용 권한 충돌을 피할 수있는 안전한 장소가 있습니까? 임시 파일을 작성하고 삭제하는 것이 항상 안전합니다. 어쩌면 user \ Local Settings \ Temp 폴더에 있습니까? 그게 최고의 장소 야? 임시 파일을 저장하고 XP, Vista, 7 및 8 Windows 버전에서 작동하는 파일을 삭제하는 안전한 장소를 알고 싶습니다.

감사합니다.

답변

2

MemoryStream을 디스크 대신 메모리에 쓸 수 있습니다. 디스크는 종종 쓰기 속도가 느리기 때문에 memorystream을 사용하면 성능이 향상 될 수 있습니다. 항상 그렇듯 : 최적화하기 전에 프로파일 링하십시오. 이 스레드를 볼 수있는 임시 폴더에 대한 자세한 내용은

: How to get temporary folder for current user

-2

당신은 스트림 클래스에서 상속 자신의 클래스를 작성 (등 읽기/쓰기)의 메소드를 오버라이드 (override) 할 수 있어야하고, 그 안에 자신의 StringBuilder를 유지해야 또는 무엇이든지 당신에게 어울립니다. 모든 것이 기억 속에 있으며 물론 정말 빨라질 것입니다.

XP에는 "Documents and Settings"이 있다고 생각합니다. Vista/7에는 각 사용자가 임시 파일을 쓸 수있는 고유 한 장소가있는 Users 폴더가 있습니다. 거기에 글을 쓸 때 문제가 없어야합니다. 당신이 생각하는 것은 정확한 것입니다.

+0

원형 프레임이 .NET Framework에 이미있는 경우 사각 휠을 만들지 마십시오. – zeebonk

+0

실제로 그것은 사각 휠을 wasnt한다, 나는 당신이 바퀴를 인정하는 데 문제가 있다고 생각 하느냐? 그것은 완전히 둥근 바퀴였습니다. 소셜 네트워크에서 시간을 낭비하거나 쓸모없는 정보를 공유하는 대신 자신을 만들었을 때 (더 자주), 당신은 더 나은 프로그래머라는 것을 알았습니다. 그리고 네, 저는 MemoryStream이 여기에 절대적으로 관련이 있다고 생각합니다. 실제로는 내 마음을 빼먹었습니다. – user734028

+0

흥미로운 aproach! 그러나 Int32.MaxValue의 StringBuilder 크기 제한을 잊지 마십시오. –

관련 문제