/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.commons.compress.compressors.gzip;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.compress.compressors.FileNameUtil;
Utility code for the gzip compression format.
@ThreadSafe
/**
* Utility code for the gzip compression format.
* @ThreadSafe
*/
public class GzipUtils {
private static final FileNameUtil fileNameUtil;
static {
// using LinkedHashMap so .tgz is preferred over .taz as
// compressed extension of .tar as FileNameUtil will use the
// first one found
final Map<String, String> uncompressSuffix =
new LinkedHashMap<>();
uncompressSuffix.put(".tgz", ".tar");
uncompressSuffix.put(".taz", ".tar");
uncompressSuffix.put(".svgz", ".svg");
uncompressSuffix.put(".cpgz", ".cpio");
uncompressSuffix.put(".wmz", ".wmf");
uncompressSuffix.put(".emz", ".emf");
uncompressSuffix.put(".gz", "");
uncompressSuffix.put(".z", "");
uncompressSuffix.put("-gz", "");
uncompressSuffix.put("-z", "");
uncompressSuffix.put("_z", "");
fileNameUtil = new FileNameUtil(uncompressSuffix, ".gz");
}
Private constructor to prevent instantiation of this utility class. /** Private constructor to prevent instantiation of this utility class. */
private GzipUtils() {
}
Detects common gzip suffixes in the given file name.
Params: - fileName – name of a file
Returns: true
if the file name has a common gzip suffix, false
otherwise
/**
* Detects common gzip suffixes in the given file name.
*
* @param fileName name of a file
* @return {@code true} if the file name has a common gzip suffix,
* {@code false} otherwise
*/
public static boolean isCompressedFilename(final String fileName) {
return fileNameUtil.isCompressedFilename(fileName);
}
Maps the given name of a gzip-compressed file to the name that the
file should have after uncompression. Commonly used file type specific
suffixes like ".tgz" or ".svgz" are automatically detected and
correctly mapped. For example the name "package.tgz" is mapped to
"package.tar". And any file names with the generic ".gz" suffix
(or any other generic gzip suffix) is mapped to a name without that
suffix. If no gzip suffix is detected, then the file name is returned
unmapped.
Params: - fileName – name of a file
Returns: name of the corresponding uncompressed file
/**
* Maps the given name of a gzip-compressed file to the name that the
* file should have after uncompression. Commonly used file type specific
* suffixes like ".tgz" or ".svgz" are automatically detected and
* correctly mapped. For example the name "package.tgz" is mapped to
* "package.tar". And any file names with the generic ".gz" suffix
* (or any other generic gzip suffix) is mapped to a name without that
* suffix. If no gzip suffix is detected, then the file name is returned
* unmapped.
*
* @param fileName name of a file
* @return name of the corresponding uncompressed file
*/
public static String getUncompressedFilename(final String fileName) {
return fileNameUtil.getUncompressedFilename(fileName);
}
Maps the given file name to the name that the file should have after
compression with gzip. Common file types with custom suffixes for
compressed versions are automatically detected and correctly mapped.
For example the name "package.tar" is mapped to "package.tgz". If no
custom mapping is applicable, then the default ".gz" suffix is appended
to the file name.
Params: - fileName – name of a file
Returns: name of the corresponding compressed file
/**
* Maps the given file name to the name that the file should have after
* compression with gzip. Common file types with custom suffixes for
* compressed versions are automatically detected and correctly mapped.
* For example the name "package.tar" is mapped to "package.tgz". If no
* custom mapping is applicable, then the default ".gz" suffix is appended
* to the file name.
*
* @param fileName name of a file
* @return name of the corresponding compressed file
*/
public static String getCompressedFilename(final String fileName) {
return fileNameUtil.getCompressedFilename(fileName);
}
}