|
하느림님 답글 감사합니다.
더 궁금한게 있어서 다시 답글을 달았었는데 그 놈을 클릭하면 자꾸 다른 글로 링크가 되서
다시 올립니다..
제가 뭘 잘못했는지 모르겠는데..
z_name 이 a.zip 이라고 가정하면..
a.zip 이란 파일이 존재하고 있으면 에러가 안 나는데..
a.zip 이 없으면 익셉션이 발생됩니다..
하느리 님 답글에는 z_name 의 파일이 있으면 지워버리는데..
제 경우는 그렇게 하면 첨부파일의 익셉션이 발생됩니다..
뭐가 잘못된 걸까요...
하느리 님이 쓰신 글 :
: 제가 옛날에 만들어 두었던 건데, 쓸모가 있을 지 모르겠네요.
:
: 1. ZipBuilder와 관련 파일처리
: //---------------------------------------------------------------------------
: // 압축하기
: // 하나의 압축파일에 여러개의 파일을 압축시킴
: // z_name : 압축할 파일명
: // t_name : 압축대상 파일명 (DOS의 *, ? 를 포함 가능)
: void __fastcall Form1::ZipFile (String &z_name, String &t_name)
: {
: if ( FileExists (z_name) ) DeleteFile (z_name);
:
: Zip->ZipFilename = z_name; //Zip은 ZipBuilder Component
: Zip->Verbose = true;
:
: // Add as many filespecs as we want to:
: // (MS-DOS Wildcards are OK)
: Zip->FSpecArgs->Add (t_name);
:
: // Set the AddOptions; these also appear in Property Inspector:
: // NOTE: This is the new "set" syntax
: Zip->AddOptions = Zip->AddOptions << AddHiddenFiles;
: Zip->AddOptions = Zip->AddOptions >> AddEncrypt; // no password
: Zip->Add (); // do it!
: }
: //---------------------------------------------------------------------------
: // 하나의 파일 압축 풀기
: // z_name : 압축파일명
: // t_name : 압축해제 대상 파일명 (DOS용 *, ? 사용가능)
: // 전체인 경우는 "*.*"
: void __fastcall Form1::UnzipFile (String &z_name, String &t_name)
: {
: if ( ! FileExists (z_name) ) return;
:
: Zip->ZipFilename = z_name;
: Zip->Verbose = true;
:
: // We can specify as many filespecs as we want to extract:
: // (MS-DOS Wildcards are OK)
: Zip->FSpecArgs->Add (t_name);
:
: // Set the ExtrOptions; these also appear in Property Inspector:
: Zip->ExtrOptions = Zip->ExtrOptions << ExtrOverWrite;
: Zip->Extract (); // do it!
: }
: //---------------------------------------------------------------------------
: 2. 메모리 상에서 ZipBuilder 이용하기
: // 스트림 압축
: // TZipBuilder *Zip : ZipBuilder Component
: // TMemoryStream *zip_stream : 압축하고자 하는 스트림
: // TMemoryStream *ziped_stream : 압축된 스트림
: zip_stream->Position = 0;
: Zip->AddStreamToStream (zip_stream); // zip_stream을 추가하면, 압축된 스트림이 ZipBuilder 컴포넌트 내의 멤버 ZipStream에 저장됨
: ziped_stream->Clear ();
: ziped_stream->LoadFromStream (Zip->ZipStream);
:
: // 스트림 압축해제
: // TMemoryStream *ziped_stream : 압축된 스트림
: // TMemoryStream *unzip_stream : 압축해제된 스트림
: ziped_stream->Position = 0;
: Zip->ExtractStreamToStream (ziped_stream); // 압축해제하면, ZipStream에 압축해제된 스트림 존재함
: unzip_stream->Clear ();
: unzip_stream->LoadFromStream (Zip->ZipStream);
:
:
: 일단 위에 거는 참조하시고요.
: 원하시는 기능이 없는 파일을 메모리상에서 생성해서 압축하고자 한다면 TFileStream을 이용하면 됩니다.
: 위의 예에서 TMemoryStream 대신에 TFileStream을 하시면 되져 (ziped_stream, unzip_stream을 이야기하는 것입니다.).
:
:
:
: 현정환 님이 쓰신 글 :
: : 안녕하세요..
: :
: : zipbuilder 를 사용하려고 합니다..
: :
: : 예를 들어서 aaa.txt 라는 놈이 있고..
: :
: : 이 파일을 aaa.zip 에 압축을 하고 싶습니다.
: :
: : ZipBuilder1->ZipFileName = "aaa.zip" 이라고 주면..
: :
: : aaa.zip 이 원래 있는 파일일 경우는 상관 없는데
: :
: : 없는 파일이면 에러가 뜹니다.
: :
: : 제가 궁금한건 원래 없는 파일을 생성해서 압축을 하려면 어떻게 해야 하죠 ..?
|