View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   https://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.commons.compress.archivers.zip;
21  
22  /**
23   * Enumerates the different modes {@link ZipArchiveOutputStream} can operate in.
24   *
25   * @see ZipArchiveOutputStream#setUseZip64
26   * @since 1.3
27   */
28  public enum Zip64Mode {
29  
30      /**
31       * Use Zip64 extensions for all entries, even if it is clear it is not required.
32       */
33      Always,
34  
35      /**
36       * Don't use Zip64 extensions for any entries.
37       *
38       * <p>
39       * This will cause a {@link Zip64RequiredException} to be thrown if {@link ZipArchiveOutputStream} detects it needs Zip64 support.
40       * </p>
41       */
42      Never,
43  
44      /**
45       * Use Zip64 extensions for all entries where they are required, don't use them for entries that clearly don't require them.
46       */
47      AsNeeded,
48  
49      /**
50       * Always use Zip64 extensions for LFH and central directory as {@link Zip64Mode#Always} did, and at the meantime encode the relative offset of LFH and disk
51       * number start as needed in CFH as {@link Zip64Mode#AsNeeded} did.
52       * <p>
53       * This is a compromise for some libraries including 7z and Expand-Archive Powershell utility(and likely Excel).
54       */
55      AlwaysWithCompatibility
56  }