This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-io.git
The following commit(s) were added to refs/heads/master by this push: new e79837752 Add RandomAccessFileOutputStream.getRandomAccessFile() e79837752 is described below commit e7983775255c0a680c6700062fffd77cc0ddb179 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Wed Jan 1 16:49:18 2025 -0500 Add RandomAccessFileOutputStream.getRandomAccessFile() --- src/changes/changes.xml | 1 + .../io/output/RandomAccessFileOutputStream.java | 10 ++++++++++ .../io/output/RandomAccessFileOutputStreamTest.java | 21 ++++++++++++++++++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 526f8f587..621dc27b2 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -57,6 +57,7 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="add" due-to="Gary Gregory">ReversedLinesFileReader implements IOIterable<String>.</action> <action dev="ggregory" type="add" due-to="Gary Gregory">Add AbstractByteArrayOutputStream.write(CharSequence, Charset).</action> <action dev="ggregory" type="add" due-to="Gary Gregory">Add AbstractByteArrayOutputStream.write(byte[]).</action> + <action dev="ggregory" type="add" due-to="Gary Gregory">Add RandomAccessFileOutputStream.getRandomAccessFile().</action> <!-- UPDATE --> <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump commons.bytebuddy.version from 1.15.10 to 1.15.11 #710.</action> </release> diff --git a/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java b/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java index 0edaba63e..ca2177b63 100644 --- a/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java +++ b/src/main/java/org/apache/commons/io/output/RandomAccessFileOutputStream.java @@ -96,6 +96,16 @@ public final class RandomAccessFileOutputStream extends OutputStream { super.flush(); } + /** + * Gets the underlying random access file. + * + * @return the underlying random access file. + * @since 2.19.0 + */ + public RandomAccessFile getRandomAccessFile() { + return randomAccessFile; + } + @Override public void write(final int b) throws IOException { randomAccessFile.write(b); diff --git a/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java b/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java index 5984a0d83..76b6b23f6 100644 --- a/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java +++ b/src/test/java/org/apache/commons/io/output/RandomAccessFileOutputStreamTest.java @@ -18,9 +18,11 @@ package org.apache.commons.io.output; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import java.io.IOException; +import java.io.RandomAccessFile; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -56,6 +58,7 @@ public class RandomAccessFileOutputStreamTest { assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), charset)); // @formatter:on try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) { + validateState(os); } } @@ -77,6 +80,7 @@ public class RandomAccessFileOutputStreamTest { assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), charset)); // @formatter:on try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) { + validateState(os); } } @@ -94,6 +98,7 @@ public class RandomAccessFileOutputStreamTest { assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), charset)); // @formatter:on try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) { + validateState(os); } } @@ -111,6 +116,7 @@ public class RandomAccessFileOutputStreamTest { assertEquals(EXPECTED.subSequence(1, EXPECTED.length() - 1), new String(Files.readAllBytes(fixturePath), charset)); // @formatter:on try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) { + validateState(os); } } @@ -122,7 +128,7 @@ public class RandomAccessFileOutputStreamTest { .setPath(fixturePath) .setOpenOptions(StandardOpenOption.WRITE) .get()) { - // doNothing + validateState(os); } // @formatter:on } @@ -131,7 +137,7 @@ public class RandomAccessFileOutputStreamTest { public void testWriteGetDefault() throws IOException { assertThrows(IllegalStateException.class, () -> { try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().get()) { - // doNothing + validateState(os); } }); } @@ -148,7 +154,7 @@ public class RandomAccessFileOutputStreamTest { try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder() .setPath(fixturePath) .get()) { - // doNothing + validateState(os); } // @formatter:on } @@ -162,6 +168,7 @@ public class RandomAccessFileOutputStreamTest { .setPath(fixturePath) .setOpenOptions(StandardOpenOption.WRITE) .get()) { + validateState(os); final byte[] bytes = EXPECTED.getBytes(charset); for (final byte element : bytes) { os.write(element); @@ -170,7 +177,15 @@ public class RandomAccessFileOutputStreamTest { assertEquals(EXPECTED, new String(Files.readAllBytes(fixturePath), charset)); // @formatter:on try (RandomAccessFileOutputStream os = RandomAccessFileOutputStream.builder().setPath(fixturePath).get()) { + validateState(os); } } + @SuppressWarnings("resource") + private void validateState(final RandomAccessFileOutputStream os) throws IOException { + final RandomAccessFile randomAccessFile = os.getRandomAccessFile(); + assertNotNull(randomAccessFile); + assertNotNull(randomAccessFile.getFD()); + } + }