01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: */
18:
19: package org.apache.tools.zip;
20:
21: import java.util.zip.ZipException;
22:
23: /**
24: * General format of extra field data.
25: *
26: * <p>Extra fields usually appear twice per file, once in the local
27: * file data and once in the central directory. Usually they are the
28: * same, but they don't have to be. {@link
29: * java.util.zip.ZipOutputStream java.util.zip.ZipOutputStream} will
30: * only use the local file data in both places.</p>
31: *
32: */
33: public interface ZipExtraField {
34:
35: /**
36: * The Header-ID.
37: * @return the header id
38: * @since 1.1
39: */
40: ZipShort getHeaderId();
41:
42: /**
43: * Length of the extra field in the local file data - without
44: * Header-ID or length specifier.
45: * @return the length of the field in the local file data
46: * @since 1.1
47: */
48: ZipShort getLocalFileDataLength();
49:
50: /**
51: * Length of the extra field in the central directory - without
52: * Header-ID or length specifier.
53: * @return the length of the field in the central directory
54: * @since 1.1
55: */
56: ZipShort getCentralDirectoryLength();
57:
58: /**
59: * The actual data to put into local file data - without Header-ID
60: * or length specifier.
61: * @return the data
62: * @since 1.1
63: */
64: byte[] getLocalFileDataData();
65:
66: /**
67: * The actual data to put central directory - without Header-ID or
68: * length specifier.
69: * @return the data
70: * @since 1.1
71: */
72: byte[] getCentralDirectoryData();
73:
74: /**
75: * Populate data from this array as if it was in local file data.
76: * @param data an array of bytes
77: * @param offset the start offset
78: * @param length the number of bytes in the array from offset
79: *
80: * @since 1.1
81: * @throws ZipException on error
82: */
83: void parseFromLocalFileData(byte[] data, int offset, int length)
84: throws ZipException;
85: }
|