public class RootPathFunction extends CordovaPlugin {
private static final String TAG = RootPathFunction.class.getSimpleName();
private String mActionName = "rootFilePath";
private Context context;
private String filePath = "/www/";
private String path;
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
context = cordova.getActivity();
Log.e(TAG, "initialize");
File root = Environment.getExternalStorageDirectory();// getDataDirectory();
File rootRes = new File(root.getPath() + filePath);
path = rootRes.getPath();
//copyAssets("www", path);
copyAssets2("www");
}
@Override
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
Log.e(TAG, "execute action=" + action + ",args=" + args.toString());
if (action.equals(mActionName)) {
callbackContext.success(path);
return true;
} else {
callbackContext.error("rootFilePath is failed!");
return false;
}
}
private void copyAssets(String assetDir, String dir) {
String[] files;
try {
files = context.getResources().getAssets().list(assetDir);
} catch (IOException e1) {
return;
}
File mWorkingPath = new File(dir);
if (!mWorkingPath.exists()) {
mWorkingPath.mkdirs();
}
for (int i = 0; i < files.length; i++) {
try {
String fileName = files[i];
if (isFolder(fileName)) {
if (0 == assetDir.length()) {
copyAssets(fileName, dir + File.separator + fileName
+ File.separator);
} else {
copyAssets(assetDir + File.separator + fileName, dir
+ File.separator + fileName + File.separator);
}
continue;
}
File outFile = new File(mWorkingPath, fileName);
if (outFile.exists())
outFile.delete();
InputStream in = null;
if (0 != assetDir.length())
in = context.getAssets().open(
assetDir + File.separator + fileName);
else
in = context.getAssets().open(fileName);
OutputStream out = new FileOutputStream(outFile);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String[] suffixs = { ".png", ".jpg", ".css", ".js", ".html", ".htm",
".jsp", ".apx", ".txt", ".LICENSE" };
private boolean isFolder(String fileName) {
for (int i = 0; i < suffixs.length; i++) {
if (fileName.contains(suffixs[i])) {
return false;
}
}
return true;
}
private void copyAssets2(String assetDir) {
String[] files;
try {
files = context.getResources().getAssets().list(assetDir);
} catch (IOException e1) {
return;
}
for (int i = 0; i < files.length; i++) {
try {
String fileName = files[i];
if (isFolder(fileName)) {
continue;
}
FileOutputStream fileOutputStream = context.openFileOutput(fileName, context.MODE_WORLD_WRITEABLE);
InputStream in = null;
if (0 != assetDir.length())
in = context.getAssets().open(
assetDir + File.separator + fileName);
else
in = context.getAssets().open(fileName);
OutputStream out = fileOutputStream;
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...
在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...
在Android开发中,有时我们需要将应用内部的资源文件,如图片、文本或配置文件等,复制到外部存储(如SD卡)以便于后续的操作,比如读取大文件以减轻内存负担,或者创建用户可访问的数据目录。`android:assets`是...
这个压缩包文件"Android代码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar"包含了几个关键的Android文件操作知识点。下面我们将详细探讨这些内容。 首先,让我们从...
在Vue.js框架中,组件是构建可复用代码的基本单元,是 Vue 应用的核心组成部分。Vue组件可以被视为自定义HTML元素,它们有自己的属性、事件和生命周期方法,能够封装任何复杂的逻辑,使得代码结构清晰、易于维护。...
mac自带的mono.data.sqlite.dll 不能用,这是我从谷歌上面搜索到的,放到unity 3d里面编译不会出错。不知道unity 怎么搞的。
要将文件保存到SD卡,首先需要打开assets中的文件,然后将其写入SD卡上的目标位置: ```java AssetManager assets = getAssets(); InputStream assetIn = assets.open("myfile.txt"); FileOutputStream fileOut = ...
YOLOv5是一种基于深度学习的目标...总的来说,将Arial.ttf字体文件整合到YOLOv5项目中,是优化模型可视化和用户交互体验的一个步骤。同时,深入理解YOLOv5的工作原理和使用技巧,对于提升模型性能和应用效果至关重要。
1. **安装SQLite插件**:将`Mono.Data.Sqlite.dll`添加到Unity项目的Plugins目录下,Unity会自动识别并加载这个库。 2. **编写C#脚本**:使用C#编写数据库操作的脚本,如建立数据库连接、执行SQL语句等。可以使用`...
微信小程序-咩咩单词 说明: ...assets — 存放字体文件 images — 存放项目图片文件 pages — 存放项目页面文件 data — 存放单词数据文件 开发环境: 微信web开发者工具 v0.11.122100 项目截图: ...
将下载好的echarts.min.js文件放入工程中assets目录下。如果没有assets目录,可以先在mian目录下,通过右击 new -> Folder -> Assets Folder 创建。 编写echarts.html文件,并将echarts.html放入assets目录。
src/assets/js/ezuikit.js
在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...
在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...
3. **环境准备**:本例中,我们将把APK文件从`assets`目录复制到外部存储空间中的特定路径下,并从该路径启动安装流程。 #### 三、代码实现 下面是一个完整的示例代码,用于实现在Android应用中安装存储于`assets`...
4. 飞机等模型的模型方向是反的,可以手动编辑gltf文件中的node属性下的matrix进行调整,matrix含义可以参考 https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial 5. 大部分模型包含...
1. 根据网站资源引用说明:pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中,默认挂载在 https://assets.pyecharts.org/assets/ 2. 因为默认优先从远程引用资源,这就导致有的时候无法加载js文件,...
方舟游戏框架,一个 2D...Android Sample/assets/data/fonts/font.json Android Sample/assets/images/background/splash.json Android Sample/assets/images/background/title.json Android Sample/assets/images/inte
Android复制assets文件到SD卡是一种常见的文件操作,目的是将应用程序的assets文件夹中的文件复制到SD卡上,以便于应用程序的数据存储和读取。本文将详细介绍Android复制assets文件到SD卡的方法,包括使用线程池和...
在Android开发中,有时我们需要将应用内部的资源文件复制到外部存储(如SD卡)上,以便用户可以访问或操作这些文件。这个过程涉及到对Android系统API的理解,特别是与文件操作、AssetManager以及多线程处理相关的...