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 <[email protected]>
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());
+ }
+
}