
ZIP 아카이브의 코멘트는 ZIP 아카이브의 헤더에 저장됩니다. 따라서, ZIP 아카이브의 헤더를 직접 접근하여 코멘트를 읽어야 합니다.
ZIP 아카이브의 코멘트를 읽는 방법은 다음과 같습니다.
1. ZIP 아카이브를 열어 헤더를 읽습니다.
2. 헤더의 0x5455 (US) 또는 0x504b (PK) 위치에 있는 4바이트의 값을 읽습니다. 이 값은 ZIP 아카이브의 코멘트의 시작 위치를 나타냅니다.
3. 코멘트의 시작 위치부터 30바이트를 읽습니다. 이 30바이트는 ZIP 아카이브의 코멘트의 내용을 포함합니다.
ZIP 아카이브의 코멘트는 ZIP 아카이브를 생성할 때 생성됩니다. ZIP 아카이브를 생성할 때, 코멘트를 포함하는 옵션을 사용하면 됩니다.
ZIP 아카이브의 코멘트를 변경하는 방법은 다음과 같습니다.
1. ZIP 아카이브를 열어 헤더를 읽습니다.
2. 헤더의 0x5455 (US) 또는 0x504b (PK) 위치에 있는 4바이트의 값을 읽습니다. 이 값은 ZIP 아카이브의 코멘트의 시작 위치를 나타냅니다.
3. 코멘트의 시작 위치부터 30바이트를 읽어 기존의 코멘트를 저장합니다.
4. 새로운 코멘트를 생성하고, 30바이트의 크기를 맞춰서 저장합니다.
5. 헤더의 0x5455 (US) 또는 0x504b (PK) 위치에 있는 4바이트의 값을 다시 기록합니다.
getArchiveComment 메소드의 사용법은 다음과 같습니다.
- getArchiveComment 메소드는 ZIP 아카이브의 코멘트를 읽어 반환합니다.
- 이 메소드는 항상 null을 반환하는 경우가 있습니다. 이 경우, ZIP 아카이브의 헤더를 직접 접근하여 코멘트를 읽어야 합니다.
예제:
#hostingforum.kr
php
$zip = new ZipArchive;
$zip->open('example.zip', ZipArchive::RDONLY);
$comment = $zip->getArchiveComment();
if ($comment === null) {
// 헤더를 직접 접근하여 코멘트를 읽어야 합니다.
$header = $zip->getFromName('example.zip', 0);
$comment = substr($header, 30, 30);
}
echo $comment;
$zip->close();
#hostingforum.kr
php
$zip = new ZipArchive;
$zip->open('example.zip', ZipArchive::CREATE);
// 새로운 코멘트를 생성합니다.
$comment = '새로운 코멘트';
// 헤더의 0x5455 (US) 또는 0x504b (PK) 위치에 있는 4바이트의 값을 읽습니다.
$header = $zip->getFromName('example.zip', 0);
$offset = 30;
// 기존의 코멘트를 저장합니다.
$oldComment = substr($header, $offset, 30);
// 새로운 코멘트를 저장합니다.
$zip->addFromString('example.zip', substr($comment, 0, 30));
// 헤더의 0x5455 (US) 또는 0x504b (PK) 위치에 있는 4바이트의 값을 다시 기록합니다.
$zip->close();
2025-06-06 12:04