2013-03-21 4 views
7

자바에서는 java.nio 라이브러리를 사용하고 FileChannel.transferTo()FileChannel.transferFrom()을 사용합니다. 거기에 뭔가가 (특히) C# 또는 내가 어딘가에서 unamanaged.DLL을로드해야 할 것입니까? 이 경우 Google은 유용하지 않습니다..NET에서 제로 복사를 수행하는 방법이 있습니까?

편집 : .NET 3.5를 대상으로합니다.

+1

당신은 [TransmitFile API] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms740565.aspx)를 찾고 있다고 생각합니다. . 관리되는 Stream 클래스가 제로 복사를 수행하지 않는다고 확신합니다. –

+0

@JohnRasch 그 모양은 ... 또한 관리되는 클래스는 실제로 제로 복사를하지 않을 것이라고 생각했습니다. – Logan

+0

그리고 맨 아래에 누군가가 파일> 2GB를 좋아하지 않는다고 말했습니다 : '파일> 2GB이면 ERROR_INVALID_PARAMETER로 실패합니다' – Logan

답변

2

가장 좋은 실적을 보일만한 수치는 UnmanagedMemoryStream 일 것 같습니다.

이 클래스는 기존의 스트림 기반 모델 를 사용하여 관리되지 않는 메모리에 대한 액세스를 지원 및 관리되지 않는 메모리의 내용이 힙에 복사 할 필요가 없습니다.

나는이 일을 한 적이 없지만이 클래스의 적합성 (또는 시나리오에서 비 관리 코드/메모리 사용)을 보증 할 수는 없습니다.

+0

@LoganDam 결국 무엇을 했습니까? (자신의 솔루션을 게시/수락 할 수 있습니다). 나는 단지 내 downvoter가 당신의 진술에 근거하여 그렇게하고 있다고 생각할 수 있습니다. "... 또는 어딘가에서 관리되지 않는 .dll을로드해야 할 것입니다."_. 링크에서 명확하지 않은 경우이 클래스는 .NET Framework 클래스이며 'mscorlib.dll'을 통해 클래스 lib 또는 console 응용 프로그램에 바로 사용할 수 있습니다. – Sepster

+0

아직 아무 것도하지 않았습니다. 이것은 연구 질문이었습니다. (결국) 구현으로 돌아 가면 다시 돌아와이 질문을 업데이트 할 것입니다. – Logan

+0

@LoganDam Cool. 나는 당신이이 문제를 어떻게 다루는 지보고 싶어 할 것이므로 좋아하는 질문을 추가했다. 행운을 빌어 요 ;-) – Sepster