2013-05-15 2 views
0

아래 코드는 zip 아카이브의 폴더 및 파일 목록을 이동하면서 작성합니다 (아직 작성되지 않은 경우 파일 경로도 작성).QuaZip을 사용하여 여러 파일을 추출하려면 어떻게합니까?

readData(char*, qint64)을 사용하여 내부 파일 데이터를 추출하여 QFile으로 스트리밍하면 응용 프로그램이 충돌합니다. 나는 이것이 옳은 것이라고 생각하지 않는다. 그러나 내가 본 것은이 사이트의 아주 느슨한 예제이다. QuaZipFile.h를 변경하여 함수를 public으로 만들면 사용할 수있다. 또한 나는 그것을 사용해서는 안된다는 암시).

내용이없는 첫 번째 파일에는 충돌이 발생하지 않지만 이후에는 충돌하지 않습니다. 여기에 필요한 코드는 (당신이 더보고해야하는 경우 문의)입니다 :

QFile newFile(fNames); 
newFile.open(QIODevice::WriteOnly); 
QTextStream outToFile(&newFile); 
char * data; 
int len = file.readData(data, 100000000); 
if(len > 0) { 
    outToFile << data; 
} 
newFile.close(); 

는 그것은 int len 라인을 통과하지 않습니다. 여기서 내가 무엇을 사용해야합니까?

QuaZip zip("zip.zip"); 
QuaZipFile file(&zip); 
... 
zip.goToFirstFile(); 
... 
zip.goToNextFile(); 

을 그리고 INT가되어, readData에 전달되는 최대 데이터 크기에 대한 임의의 번호 : 변수 파일이 이전에 꽤 정의되어 있는지 참고이 같은 puch.

답변

0

해결.

나는 (만, readData는, readline과 읽기) 읽기 다른 사용하여 시도하고이 라인은 데이터 버퍼 필요없이 작동하는 것을 발견 :

outToFile << file.readAll(); 
3

충돌하는 이유는 당신이 어떤 메모리를 할당하지 않은 것입니다 귀하의 버퍼에 대한 이름은 data입니다.