2012-07-09 2 views
0

짧은 버전 : 내가 볼supplyFile()을 사용하여 읽는 방법?

이 supplyFile()라는 연금술 방법이 있지만 두 번째 인수는이 ByteArray입니다 ... 세계 어떤 것은위한 것입니다?!?!

긴 버전 : 파일

  1. 열기를 연금술의 C 측에 글로벌 변수에 할당 :

    나는 다음을 수행하고 싶습니다.

  2. 의 읽기 (공정)

  3. 가서

  4. 액션 스크립트

    에서 EOF 또는 통지 할 때까지 2 단계로

  5. 디스플레이 용 ActionScript로 보내기 C 측 바이트 청크 파일 닫기

나는 지금 파일을 열어이 작업을 수행 할 수 있습니다. 청크를 Actionscript 쪽의 ByteArray에 넣은 다음 C로 전달하여 처리하고 역으로 처리합니다. 그러나 char의 데이터를 조작하기 위해 C 측에서 AS3_ByteArray_writeBytes()/AS3_ByteArray_readBytes()를 수행해야하므로 불필요한 오버 헤드가 발생합니다. *.

C 측의 파일을 단순히 fopen() 할 수있는 방법이 있습니까?

디스크에 매우 큰 파일 (> 4GB)이 있다고 가정합니다.

답변

1
docs에서

:

supplyFile (경로 : 문자열 데이터 :이 ByteArray) :이 방법은 당신을 수 있습니다 C 코드에 대해 지정된 경로에 파일을 제공합니다. C 코드가 보안 제한으로 인해 에 런타임에 액세스 할 수없는 특정 위치의 구성 파일을 필요로하는 경우 유용합니다.

즉, supplyFilefopen을 사용하여 C에서 액세스 할 수있는 "가상 파일"을 만들 수 있습니다.

supplyFile은 가상 파일의 경로 (원하는 내용 일 수 있음)를 나타내는 문자열과 해당 가상 파일의 내용 인 ByteArray를 호출합니다. 그런 다음 C 측에서 fopen에 가상 파일 경로를 지정하고 fread 및 친구를 일반 파일과 동일하게 사용하십시오.

+0

오 ... 그래서 C면의 디스크에있는 실제 파일을 사용할 수있는 방법이 없습니까? – davidkomer

+0

ActionScript로 디스크의 실제 파일을 읽을 수 있습니까? Alchemy C 코드는 Flash VM에서 실행되므로 ActionScript로는 할 수없는 C로는 아무 것도 할 수 없습니다. – paleozogt

+0

예 ... 파일을 ByteArray로 읽을 수는 있지만 C는 ByteArray를 직접 처리 할 수 ​​없습니다. 그런 다음 ByteArray를 char * 버퍼로 읽어야합니다.이것은 보통의 C "read into buffer"가 "bytearray에 읽어 들여 버퍼에 읽어 들인 것"을 의미합니다. 두 번째 읽기는 아마도 메모리에 있기 때문에 훨씬 빠릅니다. 그러나 이것은 반복적으로 반복되는 무언가를위한 것이므로 두 번의 읽기를 피하는 더 좋은 방법이되어야합니다. – davidkomer

관련 문제