读取assets文件(如何打开assets文件夹中的apk)

本文目录
- 如何打开assets文件夹中的apk
- 如何获取android assets文件下的mp4
- ionic3怎么读取asstes路径下面的文件
- android 怎样读取assets文件下word文件
- 为什么assets中有文件但读取不了
如何打开assets文件夹中的apk
在自己的app中安装assets目录下的apk文件的方法:
详细过程如下:
public class MainActivity extends Activity {
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
//Toast.makeText(this, ""+Environment.getExternalStorageDirectory().getAbsolutePath(), 0).show();
if(copyApkFromAssets(this, "test.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk")){
Builder m = new AlertDialog.Builder(mContext)
.setIcon(R.drawable.ic_launcher).setMessage("是否安装?")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("yes", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk"),
"application/vnd.android.package-archive");
mContext.startActivity(intent);
}
});
m.show();
}
}
public boolean copyApkFromAssets(Context context, String fileName, String path) {
boolean copyIsFinish = false;
try {
InputStream is = context.getAssets().open(fileName);
File file = new File(path);
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
byte;
int i = 0;
while ((i = is.read(temp)) 》 0) {
fos.write(temp, 0, i);
}
fos.close();
is.close();
copyIsFinish = true;
} catch (IOException e) {
e.printStackTrace();
}
return copyIsFinish;
}
}
如何获取android assets文件下的mp4
assets文件夹是android程序中存放相关外部文件的一个目录,Android官方提供了相应的方法去访问该文件夹中的内容,故此我们并不需要进行相关的路径判断等代码操作,直接调用相关方法打开文件并得到一个字节输入流(InputStream);
然后通过相应的字符编码方式读取字节解码为字符输入流(InputStreamReader);再通过BufferReader对字符输入流读取文本并将字符存入缓冲区以便能提供字符、数组和线段的高效读取;最后我们就能逐行对文件内容进行读取了;
public class MainActivity extends Activity {
ionic3怎么读取asstes路径下面的文件
方法倒是有很多种,不过直接利用资源管理器无疑是最快捷的。
我说的并不是解决方案的资源体系,而是System.Resource.ResourceReader和Writer,虽然不像ResourceManager一样有丰富的支持,但是仅靠枚举接口也足够你使用了。
我抽了点空直接给你写了个辅助静态类(ResPacker),注释齐全已调试,拿走用吧^_^using System;using System.Collections;using System.Collections.Generic;using System.Resources;using System.IO;using System.Drawing;namespace ConsoleApplication3{ class Program { //写在前面: //1.这个辅助类可以帮你把任意多的任意对象都塞到一个文件里去,也能一次性的提出来 //2.赶时间,一句try.catch都没写,自己补上 //3.不建议将不同类型的对象打包到一个文件里。用Image就都Image,用string就都string,免得取出来后还要判断类型 //4.增加和删除我没有写,原因是打包的资源文件本质是连续的字节流,从中间删一个文件太麻烦 //5.增加操作可以使用非覆盖模式的打包方法强制追加(后面有说明) //6.删除操作建议读取所有的资源,删掉不要的然后一次性覆盖写入 //7.再次提醒,.NET是决不允许资源名重名或者是数字首字资源名的。数字首字问题我已处理,重名问题自己看着办,最好穿进去前就丢到字典当主键 //8.我未做文件占用检测,所以请避免一边打包一边解包。 //9.此为静态类,给客户用的增删改小工具程序请把此类复制走 //999.感谢您的围观!代码随便用!有麻烦还找我! static void Main(string.GetType().FullName); Console.ReadKey(); } } public static class ResPacker { /// 《summary》 /// 批量打包任意对象到资源文件 /// 《/summary》 /// 《param name="objCollection"》被打包对象的列表。键值对中键为其在资源文件中的唯一标示名。《/param》 /// 《param name="targetFilePath"》目标资源文件。默认参数为当前目录下的"MyRes.pck"文件。《/param》 /// 《param name="overwrite"》是否覆盖已存在的目标文件。默认=True《/param》 public static void Pack(IDictionary《string,object》 objCollection, string targetFilePath = "MyRes.pck", bool overwrite = true) { if (overwrite) File.Delete(targetFilePath); using (ResourceWriter rw = new ResourceWriter(targetFilePath)) { foreach (KeyValuePair《string, object》 pair in objCollection) //为了防传进来的资源名有数字开头,资源名都加了前缀_ rw.AddResource("_" + pair.Key, pair.Value); rw.Generate(); rw.Close(); } } /// 《summary》 /// 解包资源文件,返回所有资源及其资源名 /// 《/summary》 /// 《param name="targetFilePath"》要解包的资源文件。默认为当前目录下的"MyRes.pck"《/param》 /// 《returns》资源字典,键值为资源唯一标示名。若无资源返回空集合。《/returns》 public static Dictionary《string,object》 GetAllResources(string targetFilePath = "MyRes.pck") { Dictionary《string, object》 rtn = new Dictionary《string, object》(); using (ResourceReader rr = new ResourceReader(targetFilePath)) { foreach (DictionaryEntry entry in rr) rtn.Add(((string)entry.Key).Substring(1), entry.Value); } return rtn; } /// 《summary》 /// 根据资源名在指定的资源文件中检索资源 /// 《/summary》 /// 《param name="resName"》资源名《/param》 /// 《param name="targetFilePath"》要在其中检索的资源文件名,默认为"MyRes.pck"《/param》 /// 《returns》资源名对应的资源《/returns》 public static object SearchResource(string resName,string targetFilePath="MyRes.pck") { object rtn=null; using (ResourceReader rr = new ResourceReader(targetFilePath)) { foreach(DictionaryEntry entry in rr) if ((string)entry.Key == ’_’ + resName) { rtn = entry.Value; break; } } return rtn; } }}
android 怎样读取assets文件下word文件
AndroidStudio中放置assets文件夹需要手动创建,我以存放一张图片为例说明。新建一个项目,切换到当前的Module,在main文件夹下新建一个名为“assets”文件夹如下图:复制资源(这里以图片为例),粘贴到“assets”文件夹下,如下图:在AndroidStudio里以输入流的方式读取资源,部分代码如下://从assets中读取图片,其它资源读取方式类似AssetManager am = res.getAssets();try { is = am.open("pic_assets.png");} catch (IOException e) { e.printStackTrace();}Bitmap bmp = BitmapFactory.decodeStream(is);
为什么assets中有文件但读取不了
可以通过这个方法来找到是否有你要的那个文件: String list = null; list = getResources().getAssets().list("abc"); 它返回的是在assets文件夹下abc文件夹中文件的文件名的列表。再去检查list中是否有你需要的文件。

更多文章:
读取assets文件(如何打开assets文件夹中的apk)
2026年9月9日 18:30
cmd异步执行(ADO两个线程中的查询使用同一个数据连接为什么能够异步执行)
2026年9月9日 16:30
最适合上下班代步的车(动力升级!售8880元,体验NB-X125:适合日常通勤)
2026年9月9日 15:10
elementui单选框radio选中(两个单选框,单点击第二个,用js如何实现第二个被选中)
2026年9月9日 15:00
linux清楚历史指令(linux命令历史记录linux命令历史)
2026年9月9日 14:30
passport软件下载(哪里可以下载免费的金山词霸2006版)
2026年9月9日 13:10
耳机小尾巴前端的插头插入手机松动,能换吗?耳机前端是什么耳机音源是什么
2026年9月9日 09:50



