3333import net .lingala .zip4j .model .ZipParameters ;
3434import net .lingala .zip4j .util .Zip4jConstants ;
3535
36+ import java .nio .charset .Charset ;
37+
3638public class RNZipArchiveModule extends ReactContextBaseJavaModule {
3739 private static final String TAG = RNZipArchiveModule .class .getSimpleName ();
3840
@@ -100,7 +102,7 @@ public void run() {
100102 }
101103
102104 @ ReactMethod
103- public void unzip (final String zipFilePath , final String destDirectory , final Promise promise ) {
105+ public void unzip (final String zipFilePath , final String destDirectory , final String charset , final Promise promise ) {
104106 new Thread (new Runnable () {
105107 @ Override
106108 public void run () {
@@ -123,7 +125,7 @@ public void run() {
123125 try {
124126 // Find the total uncompressed size of every file in the zip, so we can
125127 // get an accurate progress measurement
126- final long totalUncompressedBytes = getUncompressedSize (zipFilePath );
128+ final long totalUncompressedBytes = getUncompressedSize (zipFilePath , charset );
127129
128130 File destDir = new File (destDirectory );
129131 if (!destDir .exists ()) {
@@ -138,7 +140,7 @@ public void run() {
138140 final long [] extractedBytes = {0 };
139141 final int [] lastPercentage = {0 };
140142
141- final ZipFile zipFile = new ZipFile (zipFilePath );
143+ final ZipFile zipFile = new ZipFile (zipFilePath , Charset . forName ( charset ) );
142144 final Enumeration <? extends ZipEntry > entries = zipFile .entries ();
143145 Log .d (TAG , "Zip has " + zipFile .size () + " entries" );
144146 while (entries .hasMoreElements ()) {
@@ -457,10 +459,10 @@ protected void updateProgress(long extractedBytes, long totalSize, String zipFil
457459 *
458460 * @return -1 on failure
459461 */
460- private long getUncompressedSize (String zipFilePath ) {
462+ private long getUncompressedSize (String zipFilePath , String charset ) {
461463 long totalSize = 0 ;
462464 try {
463- ZipFile zipFile = new ZipFile (zipFilePath );
465+ ZipFile zipFile = new ZipFile (zipFilePath , Charset . forName ( charset ) );
464466 Enumeration <? extends ZipEntry > entries = zipFile .entries ();
465467 while (entries .hasMoreElements ()) {
466468 ZipEntry entry = entries .nextElement ();
0 commit comments