2010-01-07 2 views
1

이 질문은 File I/O와 관련된 내 previous question에 이어집니다.Symbian에서 RFile을 사용하는 것에 대한 대안

RFile을 사용하여 파일을 열고 데이터를 읽거나 쓸 수 있습니다. 이제 필자의 요구 사항은 파일 내의 특정 필드를 수정해야한다는 것입니다. 콜론 (:)으로 레코드 내의 각 필드와 개행 (newline)으로 각 레코드를 구분합니다. 샘플은 다음과 같습니다.

[email protected]:Albert:1:2 
[email protected]:Alice:3:1 

두 번째 레코드의 '3'을 '2'로 바꾸려고합니다. RFile을 사용하는 파일의 특정 필드를 덮어 쓰는 것이 어렵다는 것을 알고 있습니다. RFile은 그러한 기능을 사용자에게 제공하지 않기 때문입니다.

이 때문에 레코드를 수정하려면 파일의 내용을 삭제하고 레코드의 메모리 표현에서 루프를 통해 파일에 기록해야합니다. 수백 개의 레코드가 있으며 변경이 자주 발생할 수 있으므로 레코드 값이 변경 될 때마다이 작업을 수행하는 것은 비용이 많이 듭니다.

대안을 검색 한 결과 CPermanentFileStore.이 발견되었습니다.하지만 인터넷에서 사용 방법을 보여줄 수있는 소스를 찾을 수 없어 API를 사용하기가 어렵다고 생각합니다.

이 문제를 해결할 방법이 있습니까? 도와주세요.

+0

파일을 사람이 읽을 수있게 유지 하시겠습니까? vCard 형식이 도움이 될 가능성이 있습니까? –

답변

2

대상으로 지정한 Symbian OS의 버전에 따라 관계형 데이터베이스에 정보를 저장할 수 있습니다. v9.4부터 Symbian OS에는 SQL 구현이 포함되어 있습니다 (오픈 소스 SQLite 엔진 기반).

+0

DBMS는 이전 버전의 Symbian OS에서 데이터베이스 엔진의 이름입니다. –

1

이러한 유형의 레코드에 일반 파일을 사용하는 것은 운영 체제에 상관없이 많은 노력을 필요로합니다. 이 작업을 효율적으로 수행하려면 각 레코드를 확장하기 위해 파일의 공간을 예약해야합니다. 그렇지 않으면 레코드 값이 9에서 10으로 변경되면 전체 파일을 다시 작성해야합니다. 또한 파일에 조회 테이블을 저장하면 RFile :: Seek를 사용하여 레코드로 바로 이동할 수 있습니다.

CPermamanentFileStore는 파일의 실제 읽기 및 쓰기를 단순화하지만 기본적으로 자신이해야하는 일을 기본적으로 수행합니다. 이 경우 데이터베이스가 더 나은 선택 일 수 있습니다. 데이터베이스를 사용하고 싶지 않다면 매장을 사용하는 것이 더 나은 솔루션이라고 생각합니다.

관련 문제