     private(set) var compSize: UInt64
     private(set) var uncompSize: UInt64
 
-    let fileName: String?
+    let fileName: String
     let fileComment: String?
 
     private(set) var diskNumberStart: UInt32

            }
        }

        self.fileComment = String(data: Data(bytes: pointerData.alignedBytes(count: fileCommentLength)),
                                 encoding: .utf8)

        // Let's check entry's values for consistency.
        guard self.versionNeeded <= 45

        let fileNameLength = pointerData.intFromAlignedBytes(count: 2)
        let extraFieldLength = pointerData.intFromAlignedBytes(count: 2)

        guard let fileName = String(data: Data(bytes: pointerData.alignedBytes(count: fileNameLength)),
                                    encoding: .utf8)
            else { throw ZipError.wrongTextField }
        self.fileName = fileName

        let extraFieldStart = pointerData.index
        while pointerData.index - extraFieldStart < extraFieldLength {
