2009-11-18 3 views
0

파일을 통해 통신하기 위해 두 가지 앱을 얻으려고합니다. app 1에 파일에 텍스트를 추가하고 app 2에 알려주고 새 바이트를 읽으 려합니다 (전체 파일이 아님).Adobe Air - FileStream을 사용하여 파일을 업데이트합니다.

FileStream에서 새 데이터를 사용할 수있을 때 시작되는 이벤트 인 ProgressEvent.PROGRESS가 있지만 파일을 처음 열 때만 시작됩니다.

기본적으로 FileStream을 열어두고 변경 내용을 파일 끝에있는 소켓처럼 들려주고 싶습니다. 가능한가? 성능 고려 사항?

Thanks1

답변

0

Adobe의 'as3corelib'패키지에 포함 된 FileMonitor 클래스를 사용하여 파일을 모니터링 할 수 있습니다.

http://code.google.com/p/as3corelib/

이 FileMonitorEvent.CHANGE, MOVE 함께 제공하고 이벤트를 만들 수 있습니다.

프리젠 테이션 여기 예 :

http://www.mikechambers.com/blog/2009/03/11/monitoring-file-changes-in-adobe-air/

+0

그래, 나는 타이머를 사용하지 않기를 바랬다. 그것은 실망 스럽다. 누군가가 더 나은 것을 생각해 내지 않으면이 답을 올바른 것으로 표시 할 것입니다. –

0

내가 타이머와 함께 정기적으로 확인하십시오 파일 크기의 기록을 유지 말할 다음이 커짐에 이전 파일의 마지막에 찾는 것입니다. AIR 2.0에서는 "tail -f"와 비슷한 것을 포함 시키면 쉽습니다.

+0

정확하게, 나는 그것이 내장 될 것이라고 생각했다. 변화를 위해 파일을 보는 것이 로켓 과학입니다. FileStream의 progress 이벤트가 발견되었지만 작동하지 않는 것 같습니다. 귀하의 답변에 감사드립니다. –

0

난 당신이 아마 두 개의 응용 프로그램간에 파일을 읽기/쓰기를 위해 소켓과 같은 '인터페이스'를 원하는 것을 이해하지만,이 같은 일을 수행 할 수 있습니다 로컬 SharedObject와 localConnection 클래스를 사용하여 해당 sharedObject/파일에 특정 작업을 수행하는 'manager'클래스가 있습니다. 무작위 생각 ....

+0

좋은 생각이지만 열린 로컬 공유 객체가 다른 사람이 이벤트를 쓸 때 이벤트가 발생하지 않는 한 플랫 파일과 동일합니다. –

+0

참. 나는 이것이 1 : 1의 "앱 관계"였다는 인상을 받았다. 저 역시 타이머를 피하려고합니다. 간단히 말하면 성가심 때문에 ... "많은 : 많은 앱 관계"가있는 경우 메시징 서버 게임을하고 메시징 피드에 가입 할 수 있습니다. 그러나 1 : 1 앱 관계가있는 경우 localConnection의 유일한 목적은 내가 만든 관리자 클래스에서 사용자가 말한 '이벤트 실행'을 수행하는 것입니다. 하지만, 말했듯이, app1과 app2의 장면이 처음에 설명한 대로만 존재하는 경우에만 좋은 옵션입니다. 행운을 비네. – jeremym