You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/08/08 20:02:37 UTC
[commons-compress] 02/03: Add SevenZOutputFile.write(Path,
OpenOption...).
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-compress.git
commit fee64bc2cdd017fdb756fc9cb0cd13521503957a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Aug 8 15:54:58 2020 -0400
Add SevenZOutputFile.write(Path, OpenOption...).
---
src/changes/changes.xml | 3 +++
.../compress/archivers/sevenz/SevenZOutputFile.java | 17 ++++++++++++++++-
.../archivers/sevenz/SevenZOutputFileTest.java | 20 ++++++++++++++++++++
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 58d23c5..5eefcd9 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -133,6 +133,9 @@ The <action> type attribute can be add,update,fix,remove.
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add SevenZOutputFile.write(InputStream).
</action>
+ <action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
+ Add SevenZOutputFile.write(Path, OpenOption...).
+ </action>
<action type="update" date="2020-07-23" due-to="Dependabot" dev="ggregory">
Update GitHub actions/checkout from v1 to v2.3.1 #114.
</action>
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
index 28a7e6c..fe9db09 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFile.java
@@ -31,6 +31,8 @@ import java.nio.ByteOrder;
import java.nio.channels.SeekableByteChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
+import java.nio.file.OpenOption;
+import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.BitSet;
@@ -38,8 +40,8 @@ import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
-import java.util.List;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.zip.CRC32;
@@ -259,6 +261,19 @@ public class SevenZOutputFile implements Closeable {
}
/**
+ * Writes all of the given input stream to the current archive entry.
+ * @param path the data source.
+ * @param options options specifying how the file is opened.
+ * @throws IOException if an I/O error occurs.
+ * @since 1.21
+ */
+ public void write(final Path path, OpenOption... options) throws IOException {
+ try (InputStream in = new BufferedInputStream(Files.newInputStream(path, options))) {
+ write(in);
+ }
+ }
+
+ /**
* Finishes the addition of entries to this archive, without closing it.
*
* @throws IOException if archive is already closed.
diff --git a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
index 638d9d2..bebc26b 100644
--- a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZOutputFileTest.java
@@ -23,6 +23,8 @@ import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Calendar;
@@ -102,6 +104,14 @@ public class SevenZOutputFileTest extends AbstractTestCase {
outArchive.closeArchiveEntry();
entry = new SevenZArchiveEntry();
+ entry.setName("foo/bar/test.txt");
+ entry.setCreationDate(creationDate);
+ entry.setAccessDate(accessDate);
+ outArchive.putArchiveEntry(entry);
+ outArchive.write(Paths.get("src/test/resources/test.txt"));
+ outArchive.closeArchiveEntry();
+
+ entry = new SevenZArchiveEntry();
entry.setName("xyzzy");
outArchive.putArchiveEntry(entry);
outArchive.write(0);
@@ -173,6 +183,16 @@ public class SevenZOutputFileTest extends AbstractTestCase {
entry = archive.getNextEntry();
assert (entry != null);
+ assertEquals("foo/bar/test.txt", entry.getName());
+ assertFalse(entry.isDirectory());
+ assertFalse(entry.isAntiItem());
+ assertEquals(Files.size(Paths.get("src/test/resources/test.txt")), entry.getSize());
+ assertFalse(entry.getHasLastModifiedDate());
+ assertEquals(accessDate, entry.getAccessDate());
+ assertEquals(creationDate, entry.getCreationDate());
+
+ entry = archive.getNextEntry();
+ assert (entry != null);
assertEquals("xyzzy", entry.getName());
assertEquals(1, entry.getSize());
assertFalse(entry.getHasAccessDate());