diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 8b529516b61..2b4c5850584 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -140,6 +140,7 @@ The type attribute can be add,update,fix,remove. Bump org.apache.commons:commons-parent from 85 to 88 #707. Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0. + Deprecate IOUtils.readFully and IOUtils.skip. diff --git a/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java b/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java index 2c33d769d91..4a0e35176b0 100644 --- a/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java +++ b/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java @@ -43,8 +43,8 @@ import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.Sets; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; /** @@ -218,7 +218,7 @@ public static String detect(final InputStream in) throws ArchiveException { in.mark(signature.length); int signatureLength = -1; try { - signatureLength = IOUtils.readFully(in, signature); + signatureLength = IOUtils.read(in, signature); in.reset(); } catch (final IOException e) { throw new ArchiveException("Failure reading signature.", (Throwable) e); @@ -247,7 +247,7 @@ public static String detect(final InputStream in) throws ArchiveException { final byte[] dumpsig = new byte[DUMP_SIGNATURE_SIZE]; in.mark(dumpsig.length); try { - signatureLength = IOUtils.readFully(in, dumpsig); + signatureLength = IOUtils.read(in, dumpsig); in.reset(); } catch (final IOException e) { throw new ArchiveException("IOException while reading dump signature", (Throwable) e); @@ -259,7 +259,7 @@ public static String detect(final InputStream in) throws ArchiveException { final byte[] tarHeader = new byte[TAR_HEADER_SIZE]; in.mark(tarHeader.length); try { - signatureLength = IOUtils.readFully(in, tarHeader); + signatureLength = IOUtils.read(in, tarHeader); in.reset(); } catch (final IOException e) { throw new ArchiveException("IOException while reading tar signature", (Throwable) e); diff --git a/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java index a4c8091e5a1..cc85ba1c33b 100644 --- a/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveInputStream.java @@ -30,8 +30,8 @@ import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.compress.archivers.ArchiveInputStream; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.ParsingUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; /** @@ -214,7 +214,7 @@ private long asLong(final byte[] byteArray, final int offset, final int len) thr private void checkTrailer() throws IOException { // Check and skip the record trailer final byte[] expectedTrailer = ArchiveUtils.toAsciiBytes(ArArchiveEntry.TRAILER); - final byte[] actualTrailer = IOUtils.readRange(in, expectedTrailer.length); + final byte[] actualTrailer = org.apache.commons.compress.utils.IOUtils.readRange(in, expectedTrailer.length); if (actualTrailer.length < expectedTrailer.length) { throw new EOFException(String.format( "Premature end of ar archive: Invalid or incomplete trailer for entry '%s'.", @@ -248,7 +248,7 @@ public void close() throws IOException { */ private String getBSDLongName(final String bsdLongName) throws IOException { final int nameLen = checkEntryNameLength(ParsingUtils.parseIntValue(bsdLongName.substring(BSD_LONGNAME_PREFIX_LEN))); - final byte[] name = IOUtils.readRange(in, nameLen); + final byte[] name = org.apache.commons.compress.utils.IOUtils.readRange(in, nameLen); final int read = name.length; count(read); if (read != nameLen) { @@ -389,7 +389,7 @@ public ArArchiveEntry getNextEntry() throws IOException { * @throws IOException if an I/O error occurs while reading the stream or if the record is malformed. */ private byte[] getRecord() throws IOException { - final int read = IOUtils.readFully(in, metaData); + final int read = IOUtils.read(in, metaData); count(read); if (read == 0) { return null; @@ -442,7 +442,7 @@ private ArArchiveEntry parseEntry(final byte[] headerBuf) throws IOException { @Override public int read(final byte[] b, final int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -474,7 +474,7 @@ private byte[] readGNUStringTable(final ArArchiveEntry entry) throws IOException throw new ArchiveException("Invalid GNU string table entry size: " + entry.getLength()); } final int size = (int) entry.getLength(); - final byte[] namebuffer = IOUtils.readRange(in, size); + final byte[] namebuffer = org.apache.commons.compress.utils.IOUtils.readRange(in, size); final int read = namebuffer.length; if (read < size) { throw new EOFException("Premature end of ar archive: Truncated or incomplete GNU string table."); @@ -490,7 +490,7 @@ private byte[] readGNUStringTable(final ArArchiveEntry entry) throws IOException */ private void skipGlobalSignature() throws IOException { final byte[] expectedMagic = ArArchiveEntry.HEADER_BYTES; - final byte[] actualMagic = IOUtils.readRange(in, expectedMagic.length); + final byte[] actualMagic = org.apache.commons.compress.utils.IOUtils.readRange(in, expectedMagic.length); count(actualMagic.length); if (expectedMagic.length != actualMagic.length) { throw new EOFException(String.format("Premature end of ar archive: Incomplete global header (expected %d bytes, got %d).", expectedMagic.length, diff --git a/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java index 6e6554f7f00..a26b4a88234 100644 --- a/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/arj/ArjArchiveInputStream.java @@ -32,6 +32,7 @@ import org.apache.commons.compress.archivers.ArchiveInputStream; import org.apache.commons.compress.utils.ArchiveUtils; import org.apache.commons.io.EndianUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; import org.apache.commons.io.input.ChecksumInputStream; @@ -226,7 +227,7 @@ private byte[] findMainHeader() throws IOException { final int basicHeaderSize = readSwappedUnsignedShort(); // At least two bytes are required for the null-terminated name and comment if (MIN_FIRST_HEADER_SIZE + 2 <= basicHeaderSize && basicHeaderSize <= MAX_BASIC_HEADER_SIZE) { - basicHeaderBytes = org.apache.commons.io.IOUtils.toByteArray(in, basicHeaderSize); + basicHeaderBytes = IOUtils.toByteArray(in, basicHeaderSize); count(basicHeaderSize); if (checkCRC32(basicHeaderBytes)) { return basicHeaderBytes; @@ -262,7 +263,7 @@ public ArjArchiveEntry getNextEntry() throws IOException { if (currentInputStream != null) { // return value ignored as IOUtils.skip ensures the stream is drained completely final InputStream input = currentInputStream; - org.apache.commons.io.IOUtils.skip(input, Long.MAX_VALUE); + IOUtils.skip(input, Long.MAX_VALUE); currentInputStream.close(); currentLocalFileHeader = null; currentInputStream = null; @@ -307,7 +308,7 @@ public ArjArchiveEntry getNextEntry() throws IOException { @Override public int read(final byte[] b, final int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -352,7 +353,7 @@ private byte[] readHeader() throws IOException { if (basicHeaderSize < MIN_FIRST_HEADER_SIZE + 2 || basicHeaderSize > MAX_BASIC_HEADER_SIZE) { throw new ArchiveException("Corrupted ARJ archive: Invalid ARJ header size %,d", basicHeaderSize); } - final byte[] basicHeaderBytes = org.apache.commons.io.IOUtils.toByteArray(in, basicHeaderSize); + final byte[] basicHeaderBytes = IOUtils.toByteArray(in, basicHeaderSize); count(basicHeaderSize); if (!checkCRC32(basicHeaderBytes)) { throw new ArchiveException("Corrupted ARJ archive: Invalid ARJ header CRC32 checksum"); @@ -402,7 +403,7 @@ private LocalFileHeader readLocalFileHeader() throws IOException { final ArrayList extendedHeaders = new ArrayList<>(); int extendedHeaderSize; while ((extendedHeaderSize = readSwappedUnsignedShort()) > 0) { - final byte[] extendedHeaderBytes = org.apache.commons.io.IOUtils.toByteArray(in, extendedHeaderSize); + final byte[] extendedHeaderBytes = IOUtils.toByteArray(in, extendedHeaderSize); count(extendedHeaderSize); if (!checkCRC32(extendedHeaderBytes)) { throw new ArchiveException("Corrupted ARJ archive: Extended header CRC32 verification failure"); @@ -448,7 +449,7 @@ private MainHeader readMainHeader(final boolean selfExtracting) throws IOExcepti } final int extendedHeaderSize = readSwappedUnsignedShort(); if (extendedHeaderSize > 0) { - header.extendedHeaderBytes = org.apache.commons.io.IOUtils.toByteArray(in, extendedHeaderSize); + header.extendedHeaderBytes = IOUtils.toByteArray(in, extendedHeaderSize); count(extendedHeaderSize); if (!checkCRC32(header.extendedHeaderBytes)) { throw new ArchiveException("Corrupted ARJ archive: Extended header CRC32 verification failure"); diff --git a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java index 33fdb6946b1..317755eba77 100644 --- a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java @@ -28,8 +28,8 @@ import org.apache.commons.compress.archivers.zip.ZipEncoding; import org.apache.commons.compress.archivers.zip.ZipEncodingHelper; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.ParsingUtils; +import org.apache.commons.io.IOUtils; /** * CpioArchiveInputStream is a stream for reading cpio streams. All formats of cpio are supported (old ASCII, old binary, new portable format and the new @@ -386,7 +386,7 @@ public CpioArchiveEntry getNextEntry() throws IOException { */ @Override public int read(final byte[] b, final int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -443,7 +443,7 @@ private String readEntryName(int lengthWithNull) throws IOException { } private int readFully(final byte[] b, final int off, final int len) throws IOException { - final int count = IOUtils.readFully(in, b, off, len); + final int count = IOUtils.read(in, b, off, len); count(count); if (count < len) { throw new EOFException(); @@ -558,7 +558,7 @@ private CpioArchiveEntry readOldBinaryEntry(final boolean swapHalfWord) throws I } private byte[] readRange(final int len) throws IOException { - final byte[] b = IOUtils.readRange(in, len); + final byte[] b = org.apache.commons.compress.utils.IOUtils.readRange(in, len); count(b.length); if (b.length < len) { throw new EOFException(); diff --git a/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java index f14c50643ed..cb4d2fbd916 100644 --- a/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java @@ -36,7 +36,7 @@ import org.apache.commons.compress.archivers.zip.ZipEncoding; import org.apache.commons.compress.archivers.zip.ZipEncodingHelper; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; /** * The DumpArchiveInputStream reads a Unix dump archive as an InputStream. Methods are provided to position at each successive entry in the archive, and the @@ -400,7 +400,7 @@ public DumpArchiveSummary getSummary() { */ @Override public int read(final byte[] buf, int off, int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(buf, off, len); + IOUtils.checkFromIndexSize(buf, off, len); if (len == 0) { return 0; } @@ -527,7 +527,7 @@ private void readDirectoryEntry(DumpArchiveEntry entry) throws IOException { final int datalen = DumpArchiveConstants.TP_SIZE * entry.getHeaderCount(); if (blockBuffer.length < datalen) { - blockBuffer = IOUtils.readRange(raw, datalen); + blockBuffer = org.apache.commons.compress.utils.IOUtils.readRange(raw, datalen); if (blockBuffer.length != datalen) { throw new EOFException(); } diff --git a/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java b/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java index 48ed69d59e8..ace547a96f7 100644 --- a/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java @@ -29,7 +29,7 @@ import java.util.zip.Inflater; import org.apache.commons.compress.archivers.ArchiveException; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; /** * Filter stream that mimics a physical tape drive capable of compressing the data stream. @@ -130,7 +130,7 @@ public int read() throws IOException { */ @Override public int read(final byte[] b, int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -245,14 +245,14 @@ private void readBlock(final boolean decompress) throws IOException { * @throws IOException Thrown if an I/O error occurs. */ private void readFully(final byte[] b, final int off, final int len) throws IOException { - final int count = IOUtils.readFully(in, b, off, len); + final int count = IOUtils.read(in, b, off, len); if (count < len) { throw new ShortFileException(); } } private byte[] readRange(final int len) throws IOException { - final byte[] ret = IOUtils.readRange(in, len); + final byte[] ret = org.apache.commons.compress.utils.IOUtils.readRange(in, len); if (ret.length < len) { throw new ShortFileException(); } diff --git a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java index df06fa3cd07..25ef04f61e4 100644 --- a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java +++ b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java @@ -42,7 +42,6 @@ import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry; import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; -import org.apache.commons.compress.utils.IOUtils; /** * Provides a high level API for creating archives. @@ -61,7 +60,7 @@ private static class ArchiverFileVisitor, E ext private ArchiverFileVisitor(final O target, final Path directory, final LinkOption... linkOptions) { this.outputStream = target; this.directory = directory; - this.linkOptions = linkOptions == null ? IOUtils.EMPTY_LINK_OPTIONS : linkOptions.clone(); + this.linkOptions = linkOptions == null ? org.apache.commons.compress.utils.IOUtils.EMPTY_LINK_OPTIONS : linkOptions.clone(); } @Override diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java index 2d2117dca14..05ad45c0af4 100644 --- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java +++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java @@ -44,8 +44,8 @@ import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.compress.archivers.ArchiveFile; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.function.IOStream; import org.apache.commons.io.input.BoundedInputStream; import org.apache.commons.io.input.ChecksumInputStream; @@ -1104,7 +1104,7 @@ private InputStream getCurrentStream() throws IOException { // streams to get access to an entry. We defer this until really needed // so that entire blocks can be skipped without wasting time for decompression. try (InputStream stream = deferredBlockStreams.remove(0)) { - org.apache.commons.io.IOUtils.skip(stream, Long.MAX_VALUE, org.apache.commons.io.IOUtils::byteArray); + IOUtils.skip(stream, Long.MAX_VALUE); } compressedBytesReadFromCurrentEntry = 0; } @@ -1297,8 +1297,7 @@ private long[] longArray(final int size) throws MemoryLimitException { * @throws IOException if an I/O error occurs */ private ByteBuffer mapNextHeader(final StartHeader startHeader) throws IOException { - MemoryLimitException.checkKiB(bytesToKiB(startHeader.nextHeaderSize), Math.min(bytesToKiB(org.apache.commons.io.IOUtils.SOFT_MAX_ARRAY_LENGTH), - maxMemoryLimitKiB)); + MemoryLimitException.checkKiB(bytesToKiB(startHeader.nextHeaderSize), Math.min(bytesToKiB(IOUtils.SOFT_MAX_ARRAY_LENGTH), maxMemoryLimitKiB)); // startHeader is already within the channel's bounds if (channel instanceof FileChannel) { final FileChannel fileChannel = (FileChannel) channel; @@ -1306,7 +1305,7 @@ private ByteBuffer mapNextHeader(final StartHeader startHeader) throws IOExcepti } channel.position(startHeader.position()); final ByteBuffer buf = ByteBuffer.allocate(startHeader.nextHeaderSize).order(ByteOrder.LITTLE_ENDIAN); - readFully(buf); + readFully(buf, "next header"); return buf; } @@ -1435,7 +1434,7 @@ private ByteBuffer readEncodedHeader(final ByteBuffer header, final Archive arch // @formatter:on } final int unpackSize = toNonNegativeInt("header", folder.getUnpackSize()); - final byte[] nextHeader = IOUtils.readRange(inputStreamStack, unpackSize); + final byte[] nextHeader = org.apache.commons.compress.utils.IOUtils.readRange(inputStreamStack, unpackSize); if (nextHeader.length < unpackSize) { throw new ArchiveException("Premature end of stream"); } @@ -1681,10 +1680,13 @@ Folder readFolder(final ByteBuffer header) throws IOException { return folder; } - private void readFully(final ByteBuffer buf) throws IOException { - buf.rewind(); - org.apache.commons.io.IOUtils.read(channel, buf); - buf.flip(); + private void readFully(final ByteBuffer buf, final String description) throws IOException { + try { + IOUtils.readFully(channel, buf); + buf.flip(); + } catch (final EOFException e) { + throw new ArchiveException("Truncated 7z archive: end of file reached while reading %s.", description); + } } private void readHeader(final ByteBuffer header, final Archive archive) throws IOException { @@ -1713,7 +1715,7 @@ private void readHeader(final ByteBuffer header, final Archive archive) throws I private Archive readHeaders(final byte[] password) throws IOException { final ByteBuffer startHeader = ByteBuffer.allocate(SIGNATURE_HEADER_SIZE).order(ByteOrder.LITTLE_ENDIAN); - readFully(startHeader); + readFully(startHeader, "signature header"); final byte[] signature = new byte[SIGNATURE.length]; startHeader.get(signature); if (!Arrays.equals(signature, SIGNATURE)) { diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java index 980b9f85fe1..e0720114eca 100644 --- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java +++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java @@ -50,7 +50,6 @@ import org.apache.commons.compress.archivers.EntryStreamOffsets; import org.apache.commons.compress.archivers.zip.ZipEncoding; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.ParsingUtils; import org.apache.commons.io.file.attribute.FileTimes; import org.apache.commons.lang3.StringUtils; @@ -407,7 +406,7 @@ private TarArchiveEntry(final boolean preserveAbsolutePath) { } this.userName = user; this.file = null; - this.linkOptions = IOUtils.EMPTY_LINK_OPTIONS; + this.linkOptions = org.apache.commons.compress.utils.IOUtils.EMPTY_LINK_OPTIONS; this.preserveAbsolutePath = preserveAbsolutePath; } @@ -502,7 +501,7 @@ public TarArchiveEntry(final File file) { public TarArchiveEntry(final File file, final String fileName) { final String normalizedName = normalizeFileName(fileName, false); this.file = file.toPath(); - this.linkOptions = IOUtils.EMPTY_LINK_OPTIONS; + this.linkOptions = org.apache.commons.compress.utils.IOUtils.EMPTY_LINK_OPTIONS; try { readFileMode(this.file, normalizedName); } catch (final IOException e) { @@ -592,7 +591,7 @@ public TarArchiveEntry(final Path file) throws IOException { public TarArchiveEntry(final Path file, final String fileName, final LinkOption... linkOptions) throws IOException { final String normalizedName = normalizeFileName(fileName, false); this.file = file; - this.linkOptions = linkOptions == null ? IOUtils.EMPTY_LINK_OPTIONS : linkOptions; + this.linkOptions = linkOptions == null ? org.apache.commons.compress.utils.IOUtils.EMPTY_LINK_OPTIONS : linkOptions; readFileMode(file, normalizedName, linkOptions); this.userName = ""; readOsSpecificProperties(file); diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java index f45b705eeb2..fa93dea545d 100644 --- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java @@ -43,7 +43,7 @@ import org.apache.commons.compress.archivers.zip.ZipEncodingHelper; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; /** @@ -651,7 +651,7 @@ public boolean markSupported() { */ @Override public int read(final byte[] buf, final int offset, int numToRead) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(buf, offset, numToRead); + IOUtils.checkFromIndexSize(buf, offset, numToRead); if (numToRead == 0) { return 0; } @@ -690,7 +690,7 @@ private void readOldGNUSparse() throws IOException { * @throws IOException on error. */ protected byte[] readRecord() throws IOException { - final int readCount = IOUtils.readFully(in, recordBuffer); + final int readCount = IOUtils.read(in, recordBuffer); count(readCount); if (readCount != getRecordSize()) { return null; @@ -742,7 +742,7 @@ public long skip(final long n) throws IOException { throw new IllegalStateException("No current tar entry"); } // Use Apache Commons IO to skip as it handles skipping fully - return org.apache.commons.io.IOUtils.skip(currentInputStream, n); + return IOUtils.skip(currentInputStream, n); } /** @@ -754,7 +754,7 @@ private void skipRecordPadding() throws IOException { final long entrySize = currEntry != null ? currEntry.getSize() : 0; if (!isDirectory() && entrySize > 0 && entrySize % getRecordSize() != 0) { final long padding = getRecordSize() - (entrySize % getRecordSize()); - final long skipped = org.apache.commons.io.IOUtils.skip(in, padding); + final long skipped = IOUtils.skip(in, padding); count(skipped); if (skipped != padding) { throw new EOFException(String.format("Truncated TAR archive: Failed to skip record padding for entry '%s'", currEntry.getName())); diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java index 73bfdf90267..0dcf31bec12 100644 --- a/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java +++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarUtils.java @@ -39,8 +39,8 @@ import org.apache.commons.compress.archivers.zip.ZipEncoding; import org.apache.commons.compress.archivers.zip.ZipEncodingHelper; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.ParsingUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.ByteArrayOutputStream; /** @@ -726,8 +726,7 @@ static Map parsePaxHeaders(final InputStream inputStream, final if (TarArchiveEntry.PAX_NAME_KEY.equals(keyword) || TarArchiveEntry.PAX_LINK_NAME_KEY.equals(keyword)) { ArchiveUtils.checkEntryNameLength(restLen - 1, maxEntryPathLength, "TAR"); } - final byte[] rest = org.apache.commons.io.IOUtils.toByteArray(inputStream, restLen, - org.apache.commons.io.IOUtils.DEFAULT_BUFFER_SIZE); + final byte[] rest = IOUtils.toByteArray(inputStream, restLen, IOUtils.DEFAULT_BUFFER_SIZE); totalRead += restLen; // Drop trailing NL if (rest[restLen - 1] != '\n') { @@ -848,7 +847,7 @@ private static long[] readLineOfNumberForPax1x(final InputStream inputStream) th static String readLongName(final InputStream input, final ZipEncoding encoding, final int maxEntryNameLength, final TarArchiveEntry entry) throws IOException { final int declaredLength = ArchiveUtils.checkEntryNameLength(entry.getSize(), maxEntryNameLength, "TAR"); - final byte[] name = IOUtils.readRange(input, declaredLength); + final byte[] name = org.apache.commons.compress.utils.IOUtils.readRange(input, declaredLength); int actualLength = name.length; if (actualLength != declaredLength) { throw new EOFException(String.format("Truncated long name entry: Expected %,d bytes, read %,d bytes.", declaredLength, actualLength)); diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/BinaryTree.java b/src/main/java/org/apache/commons/compress/archivers/zip/BinaryTree.java index 0df1cebd1d5..b87d1670745 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/BinaryTree.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/BinaryTree.java @@ -24,7 +24,6 @@ import java.io.InputStream; import org.apache.commons.compress.archivers.ArchiveException; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.lang3.ArrayFill; /** @@ -53,7 +52,7 @@ static BinaryTree decode(final InputStream inputStream, final int totalNumberOfV throw new ArchiveException("Cannot read the size of the encoded tree, unexpected end of stream"); } - final byte[] encodedTree = IOUtils.readRange(inputStream, size); + final byte[] encodedTree = org.apache.commons.compress.utils.IOUtils.readRange(inputStream, size); if (encodedTree.length != size) { throw new EOFException(); } diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java index bc61281517d..7c77fefcc44 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java @@ -50,8 +50,8 @@ import org.apache.commons.compress.compressors.deflate64.Deflate64CompressorInputStream; import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream; import org.apache.commons.compress.utils.ArchiveUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; import org.apache.commons.lang3.ArrayUtils; @@ -1047,7 +1047,7 @@ private void pushback(final byte[] buf, final int offset, final int length) thro @Override public int read(final byte[] buffer, final int offset, final int length) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(buffer, offset, length); + IOUtils.checkFromIndexSize(buffer, offset, length); if (length == 0) { return 0; } @@ -1231,7 +1231,7 @@ private void readFully(final byte[] b) throws IOException { private void readFully(final byte[] b, final int off) throws IOException { final int len = b.length - off; - final int count = IOUtils.readFully(in, b, off, len); + final int count = IOUtils.read(in, b, off, len); count(count); if (count < len) { throw new EOFException(); @@ -1268,7 +1268,7 @@ private int readOneByte() throws IOException { } private byte[] readRange(final int len) throws IOException { - final byte[] ret = IOUtils.readRange(in, len); + final byte[] ret = org.apache.commons.compress.utils.IOUtils.readRange(in, len); count(ret.length); if (ret.length < len) { throw new EOFException(); diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java index 900cd3e14dd..e0cd181e8e4 100644 --- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java +++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java @@ -60,9 +60,9 @@ import org.apache.commons.compress.utils.ArchiveUtils; import org.apache.commons.compress.utils.BoundedArchiveInputStream; import org.apache.commons.compress.utils.BoundedSeekableByteChannelInputStream; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.function.IOFunction; import org.apache.commons.io.function.IOStream; import org.apache.commons.io.input.BoundedInputStream; @@ -500,7 +500,7 @@ public static Builder builder() { * @param zipFile file to close, can be null */ public static void closeQuietly(final ZipFile zipFile) { - org.apache.commons.io.IOUtils.closeQuietly(zipFile); + IOUtils.closeQuietly(zipFile); } private static SeekableByteChannel openZipChannel(final Path path, final long maxNumberOfDisks, final OpenOption[] openOptions) throws IOException { @@ -551,7 +551,7 @@ private static SeekableByteChannel openZipChannel(final Path path, final long ma return lowercase; }).collect(Collectors.toList()), openOptions); } catch (final Throwable ex) { - org.apache.commons.io.IOUtils.closeQuietly(channel); + IOUtils.closeQuietly(channel); throw ex; } } @@ -1323,7 +1323,7 @@ public InputStream getRawInputStream(final ZipArchiveEntry entry) throws IOExcep public String getUnixSymlink(final ZipArchiveEntry entry) throws IOException { if (entry != null && entry.isUnixSymlink()) { try (InputStream in = getInputStream(entry)) { - return zipEncoding.decode(org.apache.commons.io.IOUtils.toByteArray(in)); + return zipEncoding.decode(IOUtils.toByteArray(in)); } } return null; @@ -1544,7 +1544,7 @@ private void readCentralDirectoryEntry(final Map changeSet) { */ private void copyStream(final InputStream inputStream, final O outputStream, final E archiveEntry) throws IOException { outputStream.putArchiveEntry(archiveEntry); - org.apache.commons.io.IOUtils.copy(inputStream, outputStream); + IOUtils.copy(inputStream, outputStream); outputStream.closeArchiveEntry(); } diff --git a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java index ccc097c7d36..7b93ca40ca5 100644 --- a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java +++ b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java @@ -57,8 +57,8 @@ import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream; import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream; import org.apache.commons.compress.compressors.zstandard.ZstdUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.Sets; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; /** @@ -236,7 +236,7 @@ static String detect(final InputStream inputStream, final Set compressor inputStream.mark(signature.length); int signatureLength = -1; try { - signatureLength = IOUtils.readFully(inputStream, signature); + signatureLength = IOUtils.read(inputStream, signature); inputStream.reset(); } catch (final IOException e) { throw new CompressorException("Failed to read signature.", e); diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java index 274c8ef4437..5a8b265dbad 100644 --- a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java @@ -25,6 +25,7 @@ import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; /** @@ -120,6 +121,6 @@ public int read(final byte[] buf, final int off, final int len) throws IOExcepti /** {@inheritDoc} */ @Override public long skip(final long n) throws IOException { - return org.apache.commons.io.IOUtils.skip(in, n); + return IOUtils.skip(in, n); } } diff --git a/src/main/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStream.java index 243fc5d2e4c..3cd88e4b648 100644 --- a/src/main/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/lz4/FramedLZ4CompressorInputStream.java @@ -26,8 +26,8 @@ import org.apache.commons.compress.compressors.CompressorException; import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.ByteUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; /** @@ -159,7 +159,7 @@ private void appendToBlockDependencyBuffer(final byte[] b, final int off, int le @Override public void close() throws IOException { try { - org.apache.commons.io.IOUtils.close(currentBlock); + IOUtils.close(currentBlock); currentBlock = null; } finally { inputStream.close(); @@ -237,7 +237,7 @@ public int read() throws IOException { @Override public int read(final byte[] b, final int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -289,7 +289,7 @@ private void readFrameDescriptor() throws IOException { contentHash.update(bdByte); if (expectContentSize) { // for now, we don't care, contains the uncompressed size final byte[] contentSize = new byte[8]; - final int skipped = IOUtils.readFully(inputStream, contentSize); + final int skipped = IOUtils.read(inputStream, contentSize); count(skipped); if (8 != skipped) { throw new CompressorException("Premature end of stream while reading content size"); @@ -332,7 +332,7 @@ private int readOneByte() throws IOException { private boolean readSignature(final boolean firstFrame) throws IOException { final String garbageMessage = firstFrame ? "Not a LZ4 frame stream" : "LZ4 frame stream followed by garbage"; final byte[] b = new byte[4]; - int read = IOUtils.readFully(inputStream, b); + int read = IOUtils.read(inputStream, b); count(read); if (0 == read && !firstFrame) { // good LZ4 frame and nothing after it @@ -369,12 +369,12 @@ private int skipSkippableFrame(final byte[] b) throws IOException { if (len < 0) { throw new CompressorException("Found illegal skippable frame with negative size"); } - final long skipped = org.apache.commons.io.IOUtils.skip(inputStream, len); + final long skipped = IOUtils.skip(inputStream, len); count(skipped); if (len != skipped) { throw new CompressorException("Premature end of stream while skipping frame"); } - read = IOUtils.readFully(inputStream, b); + read = IOUtils.read(inputStream, b); count(read); } return read; @@ -382,7 +382,7 @@ private int skipSkippableFrame(final byte[] b) throws IOException { private void verifyChecksum(final org.apache.commons.codec.digest.XXHash32 hash, final String kind) throws IOException { final byte[] checksum = new byte[4]; - final int read = IOUtils.readFully(inputStream, checksum); + final int read = IOUtils.read(inputStream, checksum); count(read); if (4 != read) { throw new CompressorException("Premature end of stream while reading %s checksum", kind); diff --git a/src/main/java/org/apache/commons/compress/compressors/lz77support/AbstractLZ77CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/lz77support/AbstractLZ77CompressorInputStream.java index 16a37181819..9502ed6479a 100644 --- a/src/main/java/org/apache/commons/compress/compressors/lz77support/AbstractLZ77CompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/lz77support/AbstractLZ77CompressorInputStream.java @@ -25,8 +25,8 @@ import org.apache.commons.compress.compressors.CompressorException; import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.ByteUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; /** @@ -332,7 +332,7 @@ private void tryToCopy(final int bytesToCopy) { private void tryToReadLiteral(final int bytesToRead) throws IOException { // min of "what is still inside the literal", "what does the user want" and "how much can fit into the buffer" final int reallyTryToRead = Math.min((int) Math.min(bytesToRead, bytesRemaining), buf.length - writeIndex); - final int bytesRead = reallyTryToRead > 0 ? IOUtils.readFully(in, buf, writeIndex, reallyTryToRead) : 0 /* happens for bytesRemaining == 0 */; + final int bytesRead = reallyTryToRead > 0 ? IOUtils.read(in, buf, writeIndex, reallyTryToRead) : 0 /* happens for bytesRemaining == 0 */; count(bytesRead); if (reallyTryToRead != bytesRead) { throw new CompressorException("Premature end of stream reading literal"); diff --git a/src/main/java/org/apache/commons/compress/compressors/lzma/LZMACompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/lzma/LZMACompressorInputStream.java index 3743f4ecbeb..0df33b06905 100644 --- a/src/main/java/org/apache/commons/compress/compressors/lzma/LZMACompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/lzma/LZMACompressorInputStream.java @@ -24,6 +24,7 @@ import org.apache.commons.compress.MemoryLimitException; import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.build.AbstractStreamBuilder; import org.apache.commons.io.input.BoundedInputStream; import org.tukaani.xz.LZMA2Options; @@ -179,6 +180,6 @@ public int read(final byte[] buf, final int off, final int len) throws IOExcepti /** {@inheritDoc} */ @Override public long skip(final long n) throws IOException { - return org.apache.commons.io.IOUtils.skip(in, n); + return IOUtils.skip(in, n); } } diff --git a/src/main/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStream.java index 733be9582c2..000c113b37c 100644 --- a/src/main/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/snappy/FramedSnappyCompressorInputStream.java @@ -27,8 +27,8 @@ import org.apache.commons.compress.compressors.CompressorException; import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.ByteUtils; -import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; /** @@ -177,7 +177,7 @@ public int available() throws IOException { @Override public void close() throws IOException { try { - org.apache.commons.io.IOUtils.close(currentCompressedChunk); + IOUtils.close(currentCompressedChunk); currentCompressedChunk = null; } finally { inputStream.close(); @@ -200,7 +200,7 @@ public int read() throws IOException { @Override public int read(final byte[] b, final int off, final int len) throws IOException { - org.apache.commons.io.IOUtils.checkFromIndexSize(b, off, len); + IOUtils.checkFromIndexSize(b, off, len); if (len == 0) { return 0; } @@ -217,7 +217,7 @@ public int read(final byte[] b, final int off, final int len) throws IOException private long readCrc() throws IOException { final byte[] b = new byte[4]; - final int read = IOUtils.readFully(inputStream, b); + final int read = IOUtils.read(inputStream, b); count(read); if (read != 4) { throw new CompressorException("Premature end of stream"); @@ -324,7 +324,7 @@ private int readSize() throws IOException { private void readStreamIdentifier() throws IOException { final byte[] b = new byte[10]; - final int read = IOUtils.readFully(inputStream, b); + final int read = IOUtils.read(inputStream, b); count(read); if (10 != read || !matches(b, 10)) { throw new CompressorException("Not a framed Snappy stream"); @@ -336,7 +336,7 @@ private void skipBlock() throws IOException { if (size < 0) { throw new CompressorException("Found illegal chunk with negative size"); } - final long read = org.apache.commons.io.IOUtils.skip(inputStream, size); + final long read = IOUtils.skip(inputStream, size); count(read); if (read != size) { throw new CompressorException("Premature end of stream"); diff --git a/src/main/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStream.java index bc97d0f2d7a..a4623c751dc 100644 --- a/src/main/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/xz/XZCompressorInputStream.java @@ -26,6 +26,7 @@ import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream; import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.build.AbstractStreamBuilder; import org.apache.commons.io.input.BoundedInputStream; import org.tukaani.xz.LZMA2Options; @@ -253,7 +254,7 @@ public int read(final byte[] buf, final int off, final int len) throws IOExcepti @Override public long skip(final long n) throws IOException { try { - return org.apache.commons.io.IOUtils.skip(in, n); + return IOUtils.skip(in, n); } catch (final org.tukaani.xz.MemoryLimitException e) { // Convert to Commons Compress MemoryLimtException throw newMemoryLimitException(e); diff --git a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStream.java index 32b934568f4..6f36f64c6f0 100644 --- a/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStream.java +++ b/src/main/java/org/apache/commons/compress/compressors/zstandard/ZstdCompressorInputStream.java @@ -24,6 +24,7 @@ import org.apache.commons.compress.compressors.CompressorInputStream; import org.apache.commons.compress.utils.InputStreamStatistics; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; import com.github.luben.zstd.BufferPool; @@ -125,7 +126,7 @@ public synchronized void reset() throws IOException { @Override public long skip(final long n) throws IOException { - return org.apache.commons.io.IOUtils.skip(decIS, n); + return IOUtils.skip(decIS, n); } @Override diff --git a/src/main/java/org/apache/commons/compress/harmony/unpack200/FileBands.java b/src/main/java/org/apache/commons/compress/harmony/unpack200/FileBands.java index 5575d4b05d1..ae01a821b2d 100644 --- a/src/main/java/org/apache/commons/compress/harmony/unpack200/FileBands.java +++ b/src/main/java/org/apache/commons/compress/harmony/unpack200/FileBands.java @@ -23,7 +23,6 @@ import org.apache.commons.compress.harmony.pack200.Codec; import org.apache.commons.compress.harmony.pack200.Pack200Exception; -import org.apache.commons.compress.utils.IOUtils; /** * Parses the file band headers (not including the actual bits themselves). At the end of this parse call, the input stream will be positioned at the start of @@ -83,7 +82,7 @@ public void processFileBits() throws IOException { fileBits = new byte[numberOfFiles][]; for (int i = 0; i < numberOfFiles; i++) { final int size = (int) fileSize[i]; - fileBits[i] = IOUtils.readRange(in, size); + fileBits[i] = org.apache.commons.compress.utils.IOUtils.readRange(in, size); final int read = fileBits[i].length; if (size != 0 && read < size) { throw new Pack200Exception("Expected to read " + size + " bytes but read " + read); diff --git a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentHeader.java b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentHeader.java index 69830e63fc4..23a74d3edb7 100644 --- a/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentHeader.java +++ b/src/main/java/org/apache/commons/compress/harmony/unpack200/SegmentHeader.java @@ -25,7 +25,6 @@ import org.apache.commons.compress.harmony.pack200.BHSDCodec; import org.apache.commons.compress.harmony.pack200.Codec; import org.apache.commons.compress.harmony.pack200.Pack200Exception; -import org.apache.commons.compress.utils.IOUtils; /** * SegmentHeader is the header band of a {@link Segment}. @@ -301,7 +300,7 @@ public void read(final InputStream in) throws IOException, Error, Pack200Excepti parseCpCounts(in); parseClassCounts(in); if (getBandHeadersSize() > 0) { - setBandHeadersData(IOUtils.readRange(in, getBandHeadersSize())); + setBandHeadersData(org.apache.commons.compress.utils.IOUtils.readRange(in, getBandHeadersSize())); } archiveSizeOffset -= in.available(); } diff --git a/src/main/java/org/apache/commons/compress/utils/IOUtils.java b/src/main/java/org/apache/commons/compress/utils/IOUtils.java index 0bdd1a36bfc..2c9da310744 100644 --- a/src/main/java/org/apache/commons/compress/utils/IOUtils.java +++ b/src/main/java/org/apache/commons/compress/utils/IOUtils.java @@ -159,7 +159,7 @@ public static long copyRange(final InputStream input, final long length, final O @Deprecated public static int read(final File file, final byte[] array) throws IOException { try (InputStream inputStream = Files.newInputStream(file.toPath())) { - return readFully(inputStream, array, 0, array.length); + return org.apache.commons.io.IOUtils.read(inputStream, array, 0, array.length); } } @@ -173,9 +173,11 @@ public static int read(final File file, final byte[] array) throws IOException { * @param array buffer to fill. * @return the number of bytes actually read. * @throws IOException Thrown if an I/O error occurs. + * @deprecated Since 1.29.0, use {@link org.apache.commons.io.IOUtils#read(InputStream, byte[])} instead. */ + @Deprecated public static int readFully(final InputStream input, final byte[] array) throws IOException { - return readFully(input, array, 0, array.length); + return org.apache.commons.io.IOUtils.read(input, array); } /** @@ -190,11 +192,10 @@ public static int readFully(final InputStream input, final byte[] array) throws * @param length of bytes to read. * @return the number of bytes actually read. * @throws IOException Thrown if an I/O error occurs. + * @deprecated Since 1.29.0, use {@link org.apache.commons.io.IOUtils#read(InputStream, byte[], int, int)} instead. */ + @Deprecated public static int readFully(final InputStream input, final byte[] array, final int offset, final int length) throws IOException { - if (length < 0 || offset < 0 || length + offset > array.length || length + offset < 0) { - throw new IndexOutOfBoundsException(); - } return org.apache.commons.io.IOUtils.read(input, array, offset, length); } @@ -209,13 +210,11 @@ public static int readFully(final InputStream input, final byte[] array, final i * @param byteBuffer the buffer into which the data is read. * @throws IOException Thrown if an I/O error occurs. * @throws EOFException if the channel reaches the end before reading all the bytes. + * @deprecated Since 1.29.0, use {@link org.apache.commons.io.IOUtils#readFully(ReadableByteChannel, ByteBuffer)} instead. */ + @Deprecated public static void readFully(final ReadableByteChannel channel, final ByteBuffer byteBuffer) throws IOException { - final int expectedLength = byteBuffer.remaining(); - final int read = org.apache.commons.io.IOUtils.read(channel, byteBuffer); - if (read < expectedLength) { - throw new EOFException(); - } + org.apache.commons.io.IOUtils.readFully(channel, byteBuffer); } /** @@ -272,9 +271,11 @@ public static byte[] readRange(final ReadableByteChannel input, final int length * @param toSkip the number of bytes to skip. * @return the number of bytes actually skipped. * @throws IOException Thrown if an I/O error occurs. + * @deprecated Since 1.29.0, use {@link org.apache.commons.io.IOUtils#skip(InputStream, long)} instead. */ + @Deprecated public static long skip(final InputStream input, final long toSkip) throws IOException { - return org.apache.commons.io.IOUtils.skip(input, toSkip, org.apache.commons.io.IOUtils::byteArray); + return org.apache.commons.io.IOUtils.skip(input, toSkip); } /** diff --git a/src/test/java/org/apache/commons/compress/archivers/ZipTest.java b/src/test/java/org/apache/commons/compress/archivers/ZipTest.java index d1cebc36f25..9e39f930578 100644 --- a/src/test/java/org/apache/commons/compress/archivers/ZipTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/ZipTest.java @@ -113,8 +113,8 @@ private void assertSameFileContents(final File expectedFile, final File actualFi try (InputStream actualIs = actual.getInputStream(actualElement); InputStream expectedIs = expected.getInputStream(expectedElement)) { - org.apache.commons.compress.utils.IOUtils.readFully(expectedIs, expectedBuf); - org.apache.commons.compress.utils.IOUtils.readFully(actualIs, actualBuf); + IOUtils.read(expectedIs, expectedBuf); + IOUtils.read(actualIs, actualBuf); } assertArrayEquals(expectedBuf, actualBuf); // Buffers are larger than payload. don't care } diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/ScatterSampleTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/ScatterSampleTest.java index 04533ee9846..d24df192367 100644 --- a/src/test/java/org/apache/commons/compress/archivers/zip/ScatterSampleTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/zip/ScatterSampleTest.java @@ -30,7 +30,7 @@ import org.apache.commons.compress.AbstractTempDirTest; import org.apache.commons.compress.parallel.InputStreamSupplier; -import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; class ScatterSampleTest extends AbstractTempDirTest { @@ -41,7 +41,7 @@ private void checkFile(final File result) throws IOException { assertEquals("test1.xml", archiveEntry1.getName()); try (InputStream inputStream = zipFile.getInputStream(archiveEntry1)) { final byte[] b = new byte[6]; - final int i = IOUtils.readFully(inputStream, b); + final int i = IOUtils.read(inputStream, b); assertEquals(5, i); assertEquals('H', b[0]); assertEquals('o', b[4]); diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java b/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java index 9911b6b5296..3f6db849979 100644 --- a/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java +++ b/src/test/java/org/apache/commons/compress/archivers/zip/Zip64SupportIT.java @@ -42,12 +42,11 @@ import java.util.zip.ZipEntry; import org.apache.commons.compress.AbstractTest; +import org.apache.commons.io.IOUtils; import org.apache.commons.io.RandomAccessFileMode; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import shaded.org.apache.commons.io.IOUtils; - /** * Tests {@link ZipFile} Zip64 support. */ diff --git a/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java b/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java index 6dc78d31581..7f297c3b084 100644 --- a/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java +++ b/src/test/java/org/apache/commons/compress/archivers/zip/ZipFileTest.java @@ -258,7 +258,7 @@ void testAlternativeZstdInputStream() throws Exception { try (InputStream inputStream = zf.getInputStream(ze)) { assertNotNull(inputStream); assertFalse(zf.isUsed()); - final int bytesRead = org.apache.commons.compress.utils.IOUtils.readFully(inputStream, buffer); + final int bytesRead = IOUtils.read(inputStream, buffer); assertEquals(6066, bytesRead); assertTrue(zf.isUsed()); } @@ -271,7 +271,7 @@ void testAlternativeZstdInputStream() throws Exception { try (InputStream inputStream = builtZipFile.getInputStream(ze)) { assertTrue(inputStream instanceof ZstdInputStream); assertNotNull(inputStream); - final int bytesRead = org.apache.commons.compress.utils.IOUtils.readFully(inputStream, buffer); + final int bytesRead = IOUtils.read(inputStream, buffer); assertEquals(6066, bytesRead); } } @@ -905,7 +905,7 @@ void testSelfExtractingZipUsingUnzipsfx() throws IOException, InterruptedExcepti } try (InputStream inputStream = Files.newInputStream(extractedFile.toPath())) { - bytesRead = org.apache.commons.compress.utils.IOUtils.readFully(inputStream, buffer); + bytesRead = IOUtils.read(inputStream, buffer); assertEquals(testData.length, bytesRead); assertArrayEquals(testData, Arrays.copyOfRange(buffer, 0, bytesRead)); } diff --git a/src/test/java/org/apache/commons/compress/compressors/gzip/GzipCompressorOutputStreamTest.java b/src/test/java/org/apache/commons/compress/compressors/gzip/GzipCompressorOutputStreamTest.java index 1d3595f5f68..f00a44bee31 100644 --- a/src/test/java/org/apache/commons/compress/compressors/gzip/GzipCompressorOutputStreamTest.java +++ b/src/test/java/org/apache/commons/compress/compressors/gzip/GzipCompressorOutputStreamTest.java @@ -45,13 +45,12 @@ import org.apache.commons.codec.binary.Hex; import org.apache.commons.compress.compressors.gzip.ExtraField.SubField; import org.apache.commons.compress.compressors.gzip.GzipParameters.OS; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayFill; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import shaded.org.apache.commons.io.IOUtils; - /** * Tests {@link GzipCompressorOutputStream}. */