package com.secondworld.sdk.utils;
|
|
import android.content.res.AssetManager;
|
|
import com.secondworld.sdk.GameAppProxy;
|
import com.secondworld.sdk.UnityMsgHandler;
|
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.io.InputStream;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* Created by Administrator on 2018/6/14 0014.
|
*/
|
|
public class FileUtil {
|
|
/**
|
* Unity随包资源批量拷贝
|
*/
|
public static void copyAssets() {
|
|
// 获取当前包的版本号
|
final long currentVer = DeviceUtil.getVersionCode();
|
|
// 已经拷贝过, 则再次判断一次版本号
|
// 如果版本号不相同, 则重新进行拷贝
|
|
// 获取本地存储的版本号
|
long installVer = SPUtils.get().getLong(SPUtils.LAST_COPY_VERSION, 0);
|
|
if (installVer == currentVer) {
|
LogUtil.i("copyAssets", "已拷贝过,installVer:" + installVer + ";" + "currentVer:" + currentVer);
|
UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
|
return;
|
}
|
|
String _dest = GameAppProxy.app.getExternalFilesDir("").getAbsolutePath();
|
AssetManager _assetMgr = GameAppProxy.app.getAssets();
|
try {
|
String[] _fileNames = _assetMgr.list("android");
|
if (_fileNames != null) {
|
for (String _fileName : _fileNames) {
|
copy("android" + File.separator + _fileName,
|
_dest + File.separator + _fileName);
|
}
|
}
|
LogUtil.i("copyAssets", "全部拷贝完成," + "currentVer:" + currentVer);
|
// 存储此次的拷贝版本
|
SPUtils.get().edit().putLong(SPUtils.LAST_COPY_VERSION, currentVer).apply();
|
Map<String, Object> _msg = new HashMap<>();
|
UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static void copyConfigs() {
|
|
// 获取当前包的版本号
|
final long currentVer = DeviceUtil.getVersionCode();
|
|
// 已经拷贝过, 则再次判断一次版本号
|
// 如果版本号不相同, 则重新进行拷贝
|
|
// 获取本地存储的版本号
|
long installVer = SPUtils.get().getLong("configsversion", 0);
|
|
if (installVer == currentVer) {
|
LogUtil.i("copyConfigs", "已拷贝过,installVer:" + installVer + ";" + "currentVer:" + currentVer);
|
UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
|
return;
|
}
|
|
String _dest = GameAppProxy.app.getExternalFilesDir("").getAbsolutePath() + File.separator + "config";
|
File _file = new File(_dest);
|
if (!_file.exists()) {
|
boolean mkdir = _file.mkdir();
|
}
|
AssetManager _assetMgr = GameAppProxy.app.getAssets();
|
try {
|
String[] _fileNames = _assetMgr.list("android/config");
|
if (_fileNames != null) {
|
for (String _fileName : _fileNames) {
|
copy("android/config" + File.separator + _fileName,
|
_dest + File.separator + _fileName);
|
}
|
}
|
LogUtil.i("copyConfigs", "全部拷贝完成," + "currentVer:" + currentVer);
|
// 存储此次的拷贝版本
|
SPUtils.get().edit().putLong("configsversion", currentVer).apply();
|
Map<String, Object> _msg = new HashMap<>();
|
UnityMsgHandler.sendMessageToUnity(CodeA2U.AssetCopyFinished);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* unity单个资源拷贝
|
*
|
* @param fileName
|
*/
|
public static void copyOneAsset(String fileName) {
|
String originalPath = "android" + File.separator + fileName;
|
String destPath = GameAppProxy.app.getExternalFilesDir(
|
"").getAbsolutePath() + File.separator + fileName;
|
String _destDir = destPath.substring(0, destPath.lastIndexOf('/') + 1);
|
File _file = new File(_destDir);
|
if (!_file.exists()) {
|
boolean mkdir = _file.mkdir();
|
}
|
try {
|
InputStream _is = GameAppProxy.app.getAssets().open(originalPath);
|
FileOutputStream _fos = new FileOutputStream(new File(destPath));
|
byte[] _buffer = new byte[1024];
|
int _byteCount;
|
while ((_byteCount = _is.read(_buffer)) != -1) {
|
_fos.write(_buffer, 0, _byteCount);
|
}
|
_fos.flush();
|
_is.close();
|
_fos.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static void copy(String original, String dest) {
|
try {
|
String[] fileNames = GameAppProxy.app.getAssets().list(original);
|
if (fileNames.length > 0) {
|
File dir = new File(dest);
|
String mkdir = dir.mkdir() ? "成功" : "失败";
|
LogUtil.i("copyAssets", "[" + original + "] 是一个文件夹, 创建文件夹: [" + dest + "] " + mkdir);
|
for (String _fileName : fileNames) {
|
copy(original + File.separator + _fileName,
|
dest + File.separator + _fileName);
|
}
|
} else {
|
InputStream _is = GameAppProxy.app.getAssets().open(original);
|
FileOutputStream _fos = new FileOutputStream(new File(dest));
|
byte[] _buffer = new byte[1024];
|
int _byteCount;
|
while ((_byteCount = _is.read(_buffer)) != -1) {
|
_fos.write(_buffer, 0, _byteCount);
|
}
|
_fos.flush();
|
_is.close();
|
_fos.close();
|
LogUtil.i("copyAssets", "文件: " + original + " 已拷贝至: " + dest);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static String getFileNameWithoutExtension(String fileName) {
|
return fileName.substring(0, fileName.lastIndexOf("."));
|
}
|
|
/**
|
* 获取文件后缀名
|
*/
|
public static String getSuffixName(File file) {
|
String fileName = file.getName();
|
int index = fileName.lastIndexOf(".");
|
if (index == -1)
|
return "";
|
return fileName.substring(index + 1);
|
}
|
}
|