저는 C#의 steganography 소프트웨어,보다 정확하게는 비디오 파일 작업을하고 있습니다. 내 접근 방식은 비디오 파일의 끝에 추가 정보를 추가하는 것입니다. 그러나 먼저 전체 비디오 파일을 메모리에서 읽어야합니다. C#에서 File.ReadAllBytes() 함수를 사용하여 비디오 파일 (약 200MB 비디오)을 바이트 배열로 읽습니다. 그런 다음 비디오의 바이트와 데이터의 바이트로 새로운 배열을 만듭니다. 그러나, 때때로 OutOfMemoryException이 발생합니다. 그리고 그렇지 않을 때는 매우 느립니다. 이 문제를 해결할 C#의 기존 파일에 바이트를 추가하는 효율적인 방법이 있습니까? 고맙습니다.기존 파일에 바이트 추가 C#
답변
물론, 그것은 쉽게되지 :
using (var stream = File.Open(path, FileMode.Append))
{
stream.Write(extraData);
}
먼저 파일을 읽을 필요가.
나는 이것을 스테 가노 그라피로 분류하지 않을 것입니다. 비디오 프레임을 미묘하게 변경하여 여전히 유효한 비디오이고 사람의 눈으로 보일 수도 있지만, 여분의 데이터는 그러한 프레임 내에서 그렇게 인코딩됩니다. 그것은 나중에 추출 될 수 있습니다.
열기 FileMode.Append
var stream = new FileStream(path, FileMode.Append)
으로 파일를 FileMode.APPEND
: 그것은 존재하고 파일의 끝에 추구, 또는 이를 만드는 경우
파일을 엽니 다 새로운 파일. 이 경우 FileIOPermissionAccess.Append 권한이 필요합니다. FileMode.Append는 FileAccess.Write와 결합해서 만 사용할 수 있습니다. 파일 끝나기 전에 위치 찾기를 시도하면 IOException 예외가 발생하고 읽으려고하면 이 실패하고 NotSupportedException 예외가 throw됩니다.
이 방법을 시도하면 더 빠른 결과를 얻을 수 있는지 확실하지 않지만 논리적으로해야합니다. : https://stackoverflow.com/a/6862460/2835725
이것은 더 많은 코멘트입니다! – mybirthname
댓글이 없습니다 + 답을 제공합니다. – user2835725
댓글을 달 수없는 경우 [코멘트] (http://stackoverflow.com/help/privileges/comment)에 적합한 답변을 게시해야한다는 의미는 아닙니다. 또한 링크 전용 답변을 피하십시오. 소스를 확인하고 여기에 관련 답변/코드를 복사하십시오. 이것은 또한 플래그가 더 적절한 중복 질문의 경우입니다. – Reti43
- 1. C++ 기존 텍스트 파일에 문자열 추가
- 2. 기존 UTF16LE 파일에 텍스트 추가
- 3. java : 기존 파일에 데이터 추가
- 4. 코코아 : 기존 파일에 오디오 추가
- 5. 기존 Gzip 파일에 텍스트 추가
- 6. 기존 json 파일에 데이터 추가
- 7. System.out을 리디렉션하고 기존 파일에 추가
- 8. 오디오 파일을 기존 파일에 추가
- 9. 기존 .zip 파일에 디렉토리 추가
- 10. 기존 rdf 파일에 주석 추가
- 11. 새 줄에 기존 파일에 추가
- 12. Xstream이 기존 XML 파일에 추가
- 13. XElement를 기존 XML 파일에 추가
- 14. 부스트를 통해 기존 파일에 추가
- 15. JDOM을 사용하여 기존 파일에 데이터 추가
- 16. Ruby의 기존 gzip 파일에 문자열 추가
- 17. EnvDTE를 사용하여 프로그래밍 방식으로 기존 C# 파일에 함수 추가
- 18. 기존 바이트 배열의 일부에서 바이트 배열 초기화 C#
- 19. C#의 기존 바이트 []에 어떻게 액세스합니까?
- 20. 자바를 사용하여 기존 zip 파일에 바이트 배열 작성하기
- 21. 기존 JSON 데이터가있는 파일에 객체 추가
- 22. CodeDom 기존 파일에 대한 참조 추가
- 23. 파이썬에서 기존 csv 파일에 행 추가
- 24. 기존 MySQL 덤프 파일에 덤프 추가
- 25. 새 페이지의 이미지를 기존 PDF 파일에 추가
- 26. 기존 apk 파일에 추가 기능을 추가하는 방법
- 27. Bash를 사용하여 기존 파일에 입력 추가
- 28. 목록에서 숫자를 파이썬을 사용하여 기존 파일에 추가
- 29. PDFBox를 사용하여 기존 PDF 파일에 헤더 추가
- 30. 기존 CSV 파일에 새 데이터 추가
코드 제공 – giammin
200MB 파일을 메모리에로드하는 것은 잘못된 접근 방식입니다 (일회성 시나리오 무시). 대신 스트림을 사용해야합니다. – xxbbcc
http://stackoverflow.com/questions/5958495/append-data-to-byte-array?rq=1 이걸 확인하십시오 .. – mybirthname