导航:首页 > 操作系统 > android调用assets

android调用assets

发布时间:2024-04-30 21:14:36

android studio引用assets文件夹里的东西路径怎么写

1.默认Android Studio的assets文件夹路径:src/main/assets,在assets文件夹创建teachcourse.xml文件,引用该文件的写法:

123456InputStream is = null;AssetManager manager = getAssets();try { is = manager.open("teachcourse.xml");} catch (Exception e) { e.printStackTrace();}
2.直接写上assets文件夹内文件的名称,使用AssetsManager管理器打开,获取输入流,最后解析里面的内容

⑵ android工程中assets文件夹是干什么用的

这里面可以放一些文件,这些文件在打包生成apk的时候不会被编译,以文件原有的方式来保存,可以通过AssetManager来操作这些文件。详细的可以网络一下,说的肯定比我说的详细。

⑶ Android中assets目录和raw目录的区别和使用情况

今天看到有人问Android中assets目录和raw目录的区别和使用情况。

能提出这个问题的,应该都了解它们的共同点:

它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。

要说区别,当然最直观的就是获取它们的InputStream的API不一样了。

assets:InputStream assets = getAssets().open("xxxx");

raw:InputStream raw = getResources().openRawResource(R.raw.xxxx)

有人可能会有疑问,既然它们都是被原封不动的拷贝到APK中,而assets可以创建目录结构,又能够动态的列出assets中的所有资源getAssets().list(String path);,这些raw都做不到,那raw还有什么用呢?

下面我们来说说它们主要的区别:

由 于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源 文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适 的。
assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与 Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目 录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。
另 外,网上关于assets和raw的资料都千篇一律了,因此关于这两者中单个文件大小不能超过1M的**错误**描述也在传播,即如果读取超过1M的文件 会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,还引申出种种解决方案。个人认为不应该有这样的限制,为了验证这个说法写了个Demo,发现将近5M的压缩 包在assets和raw中都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果 是这样,较新版的ADT应该不会出现这种情况。

更新:为了验证我最后一段的描述,避免导致结果误 导,晚上写了几个小Demo验证之后又花了点时间查阅了一些资料,最后找到这篇文章http://ponystyle.com/blog/2010/03 /26/dealing-with-asset-compression-in-android-apps/ ,文章比较简单清晰,我就不翻译了。这篇文章应该还蛮有说服力的,从根本上说明了当时Android2.3以前产生资源文件单个文件大小不能超过1M的原 因和部分解决方法。不过由于限制是当时的aapt决定的,现在已经更新了多个版本的aapt已经不存在这种问题了,也印证了我最后一段的猜想。

⑷ Android中,我将Excel文件放在assets目录下,如何在程序中访问到该路径文件

你好,你可以参考下面的程序,那个path不一定是路径也可是文件名。
public void deepFile(Context ctxDealFile, String path) {
try {
String str[] = ctxDealFile.getAssets().list(path);
if (str.length > 0) {//如果是目录
File file = new File("/数陪data/" + path);
file.mkdirs();
for (String string : str) {
path = path + "/" + string;
System.out.println("zhoulc:\t" + path);
// textView.setText(textView.getText()+"\氏银t"+path+"\t");
deepFile(ctxDealFile, path);
path = path.substring(0, path.lastIndexOf('/'));
}
} else {//如果是文件
InputStream is = ctxDealFile.getAssets().open(path);
FileOutputStream fos = new FileOutputStream(new File("/data/"歼毕宴
+ path));
byte[] buffer = new byte[1024];
int count = 0;
while (true) {
count++;
int len = is.read(buffer);
if (len == -1) {
break;
}
fos.write(buffer, 0, len);
}
is.close();
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

⑸ android 修改apk的asset目录后怎么安装

从整体上看,一般的对于assets 里面的apk进行安装的操作是先将 apk 复制到sd上 或者其他的可读取存储位置。比如我拿到的机子 有两个路径

/mnt/emmc/ 手机的内部存储位置(其他的手机不一定有)

/mnt/sdcard/ 手机的sd存储位置

复制到这两个路径都OK。


首先要获取assets目录下文件的数据流,用于写到存储位置上。

//这里的fileName 这个是assets文件下的全文件名 包括后缀名。

path 是存储的路径位置,绝对路径。

InputStream is = context.getAssets().open(fileName);

File file = new File(path);

file.createNewFile();

FileOutputStream fos = new FileOutputStream(file);

byte[] temp = new byte[1024];

int i = 0;

while ((i = is.read(temp)) > 0) {

fos.write(temp, 0, i);

}

fos.close();

is.close();

通过Context 获取到AssetManager

阅读全文

与android调用assets相关的资料

热点内容
服务器如何删除安装包 浏览:888
编译器代码查找键 浏览:263
音乐剧编译是啥 浏览:198
专家系统pdf 浏览:715
编译使用dos命令 浏览:50
我的世界服务器为什么有时候总是进不去 浏览:64
虹软算法工程师 浏览:178
程序员失业被带走 浏览:90
莱阳设计图纸加密价格 浏览:680
王者尝试连接服务器是什么意思 浏览:396
有云服务器可以做穿墙吗 浏览:187
安卓如何彻底删除浏览器 浏览:206
什么橙APP买吃 浏览:328
如何管理服务器帐号 浏览:839
linuxgenymotion 浏览:962
董车长app是干什么的 浏览:832
百度输入法双拼方案文件夹 浏览:380
cad中生成面的命令 浏览:758
clp在单片机中是什么意思 浏览:146
还珠格格韩国源码 浏览:892