2010-05-30 10 views
4

Zip 파일을 사용하는 것과 마찬가지로 파일 및 디렉토리를 저장하는 데 사용할 수있는 클래스가 있습니까? 나는 (실제 클래스 같은 실제 클래스) 어떤 Zip 파일을 작성하는 "진짜"클래스를 발견하지 않았습니다 때문에파일을 저장하는 Filestorage 클래스가 있습니까?

, 용기와 같은 파일에 파일 및 디렉토리를 저장 할 수 좋을 것이다.

완벽한 API는 아마도 다음과 같을 것이다 :

int main() 
{ 
    ContainerFile cntf("myContainer.cnt", ContainerFile::CREATE); 
    cntf.addFile("data/some-interesting-stuff.txt"); 
    cntf.addDirectory("data/foo/"); 
    cntf.addDirectory("data/bar/", ContainerFile::RECURSIVE); 
    cntf.close(); 
} 

을 ... 난 당신이 아이디어를 얻을 수 있기를 바랍니다. 중요한 요구 사항은 다음과 같습니다

  • 이 도서관은
  • 아무것도 * GPL이 경우에 허용되지 않습니다 (MIT와 BSD 라이선스는)
  • 크로스 플랫폼

나는 이미 창조의 생각으로 연주해야 임 플리 멘 테이션은 SQLite (그리고 바이너리 블롭을 저장할 수있는 능력)에 기반합니다. 불행히도 SQLite 데이터베이스에 디렉토리 구조를 저장하는 것은 불가능한 것처럼 보이기 때문에이 경우에는 거의 쓸모가 없습니다.

이러한 클래스 라이브러리가 필요하지 않으십니까? 나는 그것이 이진 데이터를 더 잘 처리하는 생각으로 당신은 당신이 당신의 자신을 만드는 경우 http://www.cs.unc.edu/Research/compgeom/gzstream/

을 확인하는 것 같아서

답변

-1

나는 작고, 아직 libarchive 주위에 작동하는 래퍼를 쓸 시간이 걸렸다. 나는 Libarchive의 모든 기능을 정확히 익숙하지 해요,하지만 결과는 내가 필요로 무엇을 맞는 :

archive_wrapper.cpp @ gist.github.com

는 등, 문자열 libmars를 사용하지만 너무 열심히하는 것이되지 않을 것 같아요 발생을 std::string으로 대체하십시오. 물론이 래퍼는 MIT/X11 라이센스 (libmars와 마찬가지로)에서 사용할 수 있습니다. 즉, 원하는대로 할 수 있습니다. ;-)

+0

악의와 모든 것을 알지만, 실제로 필요한 솔루션에만 해당되는 솔루션이므로 내 대답을 받아 들였습니다. 게시 된 모든 답변에 대해 여전히 감사드립니다. –

+0

@ user350814 링크를 업데이트하십시오. – neo

0

는 레디 스 SQLite는보다 더 나은 선택이 될 수 있습니다.

+0

gzip이 zip이 아닙니다. –

+1

어쨌든 다른 컨테이너 형식을 찾고 있다면 gz 또는 tar 또는 bz2의 문제점은 무엇입니까? – user7116

+2

@nebukadnezzar : 질문을 수정하여 파일을 Zip 형식으로 저장하려고한다고 명시하십시오. SQLite에 저장하는 것과 관련하여 영구 데이터를 저장하는 데이터 파일 형식을 요구하는 것처럼 보였습니다. – shuttle87

2

SQLite db에서는 디렉토리와 같은 구조체를 저장할 수 있습니다 ... "디렉토리"테이블이 있어야합니다. 각 디렉토리에 대해 하나의 항목이 있어야하며 인덱스와 "상위"필드 (보유 다른 디렉토리의 인덱스, 또는 부모가없는 경우는 0). 그런 다음 파일 속성, 상위 디렉토리의 색인 및 파일 내용을 포함하는 "파일"테이블을 가질 수 있습니다.

이제는 관계형 데이터베이스에 디렉토리 트리가 있습니다.

1

누가 나를 설명하는 API와 유사한 PhysicsFS이라고 지적했으나 필요한 모든 것을 수행하는 순수한 C API입니다. 사소한 객체 지향 래퍼 (wrapper)는 쉽게 작성할 수 있습니다.

+0

PhysicsFS가 유용 해 보입니다. :) –

+0

매우 좋았습니다. 링크 주셔서 감사합니다! –

+0

아카이브를 읽을 수는 있지만 아카이브를 만들 수는없는 것처럼 보입니다. –

관련 문제