Разделитель пути к Zip-файлу - PullRequest
0 голосов
/ 18 февраля 2020

Я доставляю zip-файлы компании, которая имеет среду Unix, и они говорят мне, что разделитель пути неверен. Я нашел решение, которое работает, но когда я запускаю его в производство, разделитель пути снова становится неправильным.

Могу ли я узнать, какой разделитель пути имеет zip-файл, когда я использую Windows окружение?

Независимо от того, как я пытался открыть файл, разделитель пути отображается одинаково, даже если я знаю, что у одного файла есть backsla sh, а у другого - forward sla * sh Я не могу отличить их друг от друга . сильный текст

1 Ответ

1 голос
/ 18 февраля 2020

Разделитель пути в zip-файле ДОЛЖЕН всегда быть /. Вот что говорит c ( APPNOTE.TXT ) для zip-файлов

   4.4.17.1 The name of the file, with optional relative path.
   The path stored MUST NOT contain a drive or
   device letter, or a leading slash.  All slashes
   MUST be forward slashes '/' as opposed to
   backwards slashes '\' for compatibility with Amiga
   and UNIX file systems etc.  If input came from standard
   input, there is no file name field.  

При Windows программа распаковки преобразует пути с / в собственный windows пути, которые используют \.

Чтобы посмотреть, какой разделитель путей фактически используется внутри zip-файла, вы можете попробовать запустить на нем zipdetails . Поля Filename показывают, что на самом деле хранится внутри файла. В приведенном ниже zip-файле содержится один файл tmp/abc

$ zipdetails /tmp/abc.zip 

0000 LOCAL HEADER #1       04034B50
0004 Extract Zip Spec      0A '1.0'
0005 Extract OS            00 'MS-DOS'
0006 General Purpose Flag  0000
0008 Compression Method    0000 'Stored'
000A Last Mod Time         505246C0 'Tue Feb 18 08:54:00 2020'
000E CRC                   4788814E
0012 Compressed Length     00000004
0016 Uncompressed Length   00000004
001A Filename Length       0007
001C Extra Length          001C
001E Filename              'tmp/abc'
0025 Extra ID #0001        5455 'UT: Extended Timestamp'
0027   Length              0009
0029   Flags               '03 mod access'
002A   Mod Time            5E4BA627 'Tue Feb 18 08:53:59 2020'
002E   Access Time         5E4BA627 'Tue Feb 18 08:53:59 2020'
0032 Extra ID #0002        7875 'ux: Unix Extra Type 3'
0034   Length              000B
0036   Version             01
0037   UID Size            04
0038   UID                 0000245B
003C   GID Size            04
003D   GID                 00005208
0041 PAYLOAD               abc.

0045 CENTRAL HEADER #1     02014B50
0049 Created Zip Spec      1E '3.0'
004A Created OS            03 'Unix'
004B Extract Zip Spec      0A '1.0'
004C Extract OS            00 'MS-DOS'
004D General Purpose Flag  0000
004F Compression Method    0000 'Stored'
0051 Last Mod Time         505246C0 'Tue Feb 18 08:54:00 2020'
0055 CRC                   4788814E
0059 Compressed Length     00000004
005D Uncompressed Length   00000004
0061 Filename Length       0007
0063 Extra Length          0018
0065 Comment Length        0000
0067 Disk Start            0000
0069 Int File Attributes   0001
     [Bit 0]               1 Text Data
006B Ext File Attributes   81A40000
006F Local Header Offset   00000000
0073 Filename              'tmp/abc'
007A Extra ID #0001        5455 'UT: Extended Timestamp'
007C   Length              0005
007E   Flags               '03 mod access'
007F   Mod Time            5E4BA627 'Tue Feb 18 08:53:59 2020'
0083 Extra ID #0002        7875 'ux: Unix Extra Type 3'
0085   Length              000B
0087   Version             01
0088   UID Size            04
0089   UID                 0000245B
008D   GID Size            04
008E   GID                 00005208

0092 END CENTRAL HEADER    06054B50
0096 Number of this disk   0000
0098 Central Dir Disk no   0000
009A Entries in this disk  0001
009C Total Entries         0001
009E Size of Central Dir   0000004D
00A2 Offset to Central Dir 00000045
00A6 Comment Length        0000
Done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...