Commit b5e80eab authored by feihuaduo's avatar feihuaduo

修复多个压缩包数据库读取的问题

修复压缩包内有中文文件崩溃的问题
parent 3264cf60
...@@ -6,6 +6,9 @@ import android.support.annotation.WorkerThread; ...@@ -6,6 +6,9 @@ import android.support.annotation.WorkerThread;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import com.file.zip.ZipEntry;
import com.file.zip.ZipFile;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
...@@ -15,11 +18,11 @@ import java.io.IOException; ...@@ -15,11 +18,11 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import cn.garymb.ygomobile.App; import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
...@@ -29,6 +32,7 @@ import ocgcore.data.Card; ...@@ -29,6 +32,7 @@ import ocgcore.data.Card;
public class CardManager { public class CardManager {
private String dbDir, exDbPath; private String dbDir, exDbPath;
private final SparseArray<Card> cardDataHashMap = new SparseArray<>(); private final SparseArray<Card> cardDataHashMap = new SparseArray<>();
private static int cdbNum=0;
public CardManager(String dbDir, String exPath) { public CardManager(String dbDir, String exPath) {
this.dbDir = dbDir; this.dbDir = dbDir;
...@@ -122,17 +126,19 @@ public class CardManager { ...@@ -122,17 +126,19 @@ public class CardManager {
public static List<File> readZipCdb(String zipPath) throws IOException { public static List<File> readZipCdb(String zipPath) throws IOException {
String savePath= App.get().getExternalCacheDir().getAbsolutePath(); String savePath= App.get().getExternalCacheDir().getAbsolutePath();
List<File> fileList=new ArrayList<>(); List<File> fileList=new ArrayList<>();
int num=0;
ZipFile zf = new ZipFile(zipPath); ZipFile zf = new ZipFile(zipPath,"GBK");
InputStream in = new BufferedInputStream(new FileInputStream(zipPath)); InputStream in = new BufferedInputStream(new FileInputStream(zipPath));
ZipInputStream zin = new ZipInputStream(in); ZipInputStream zin = new ZipInputStream(in);
ZipEntry ze; ZipEntry ze;
while ((ze = zin.getNextEntry()) != null) { Enumeration<ZipEntry> entris = zf.getEntries();
while (entris.hasMoreElements()) {
ze=entris.nextElement();
if (ze.isDirectory()) { if (ze.isDirectory()) {
//Do nothing //Do nothing
} else { } else {
if (ze.getName().endsWith(".cdb")) { if (ze.getName().endsWith(".cdb")) {
File file=new File(savePath,"cards"+num+".cdb"); File file=new File(savePath,"cards"+cdbNum+".cdb");
InputStream inputStream = zf.getInputStream(ze); InputStream inputStream = zf.getInputStream(ze);
OutputStream os = new FileOutputStream(file); OutputStream os = new FileOutputStream(file);
int bytesRead = 0; int bytesRead = 0;
...@@ -143,6 +149,7 @@ public class CardManager { ...@@ -143,6 +149,7 @@ public class CardManager {
os.close(); os.close();
inputStream.close(); inputStream.close();
fileList.add(file); fileList.add(file);
cdbNum++;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment