android写出资源文件,Android 读取Assets下的资源文件

本文介绍了Android中如何读取assets文件夹下的资源文件,包括直接从assets读取和从Raw文件中读取的方法,提供了详细的代码示例,并提到了资源文件的不可写属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做Android开发近半年了,东西越学越多,硬盘容量越来越小。很多东西找起来也不方便,为此,我打算从今天起把工作中学到的东西整理起来,写成日记。也希望与广大网友分享我的经验。一同进步。今天主要介绍文件读取。下面讲讲原理。如果大家不感兴趣,可以直接跳过。

assets文件夹资源的访问

assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

1. 先在Activity里面调用getAssets() 来获取AssetManager引用。

2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。

4.调用AssetManager.close() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作

以下为从Raw文件中读取:

代码

public String getFromRaw(){

try {

InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));

BufferedReader bufReader = new BufferedReader(inputReader);

String line="";

String Result="";

while((line = bufReader.readLine()) != null)

Result += line;

return Result;

} catch (Exception e) {

e.printStackTrace();

}

}

以下为直接从assets读取

代码

public String getFromAssets(String fileName){

try {

InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );

BufferedReader bufReader = new BufferedReader(inputReader);

String line="";

String Result="";

while((line = bufReader.readLine()) != null)

Result += line;

return Result;

} catch (Exception e) {

e.printStackTrace();

}

}

当然如果你要得到内存流的话也可以直接返回内存流!

接下来,我们新建一个工程文件,命名为AssetsDemo。

然后建立一个布局文件,如下,很简单,无需我多介绍,大家一看就明白。

然后呢,我从网上找了段文字,存放在assets文件目录下,取名为health.txt 这就是今天我们要读取的文件啦。这个.txt文件,我们可以直接双击查看。如下所示。

接下来,就是今天的重头戏,Android读取文件的核心代码。就直接贴代码了。

package com.assets.cn;

import java.io.InputStream;

import org.apache.http.util.EncodingUtils;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.widget.TextView;

public class AssetsDemoActivity extends Activity {

public static final String ENCODING = "UTF-8";

TextView tv1;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tv1 = (TextView)findViewById(R.id.tv1);

tv1.setTextColor(Color.BLACK);

tv1.setTextSize(25.0f);

tv1.setText(getFromAssets("health.txt"));

}

//从assets 文件夹中获取文件并读取数据

public String getFromAssets(String fileName){

String result = "";

try {

InputStream in = getResources().getAssets().open(fileName);

//获取文件的字节数

int lenght = in.available();

//创建byte数组

byte[] buffer = new byte[lenght];

//将文件中的数据读到byte数组中

in.read(buffer);

result = EncodingUtils.getString(buffer, ENCODING);

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

}

这里是mainfest文件。

android:label="@string/app_name">

最后,我们运行一下程序。

细心的朋友也行会发现,这其实就是一个简单的阅读器了,哈哈......

ok,全部讲解完毕,大家有不明白的可以给我留言。

====》源码下载:http://download.csdn.net/detail/gsg8709/4118291

Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)

很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏. 有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中. 这样就不需要,在安装APK之后,去下载资 ...

android中拷贝assets下的资源文件到SD卡中(可以超过1M)

很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏. 有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中. 这样就不需要,在安装APK之后,去下载资 ...

Android 读取assets文件下的txt文件

android 读取assets文件下的txt文件,解决了读取txt文件的乱码问题: package com.example.com.scrollview; import java.io.Buffer ...

android开发,assets下面的资源文件不会变化/改动

我再调试asserts下面的资源文件,发现我改动assets下面的文件内容,在真机上测试的时候还是最原先的内容,没有变,后来,卸载,重装就ok了. 原因: assets下面的资源文件,若覆盖重装,则里 ...

读取web应用下的资源文件(例如properties)

package gz.itcast.b_resource; import java.io.IOException; import java.io.InputStream; import java.ut ...

unity 自动删除未引用的Assets下的资源

随着时间的堆积,项目中Assets文件夹下的资源会变得越来越繁杂,有些贴图.材质啥的可能压根没有使用过,但是又不敢轻易去删除. 这里分享两个插件,用于管理这些资源. 一.ResourceChecker ...

Springboot 项目 无法读取resources下的mapper文件夹的.xml文件

之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...

php读取目录下的所有文件

php读取目录下的所有文件 $path = './use'; $result = scanFile($path); function scanFile($path) { global $result; ...

maven 编译部署src/main/java下的资源文件

maven 编译部署src/main/java下的资源文件 maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targ ...

随机推荐

清空Github上某个文件的历史版本

title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...

C++_static与非static成员(函数)

static与非static成员(函数)  第4版399页: 对于特定类类型的全体对象而言,访问一个全局变量有时是必要的.然而,全局变量会破坏封装:对象需要支持特定 ...

framework各版本新特性(为面试准备)

菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...

Asp.net Zero 应用实战-最初部署问题

此时用的是aspnet-zero-core-4.3.0 1.前两天vs2017刚刚最新升级了,打开后就报错,然后就根据提示把每个项目文件中添加了

EntityFrameworkCore DBFirst

需要引用如下nuget包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityF ...

Integer与int区别

Integer与int的区别:估计大多数人只会说道两点,一开始我也不太清楚,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i ...

Spring Boot常用注解

SpringBoot注解大全   一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@Enable ...

java实验2实验报告(20135232王玥)

实验二 Java面向对象程序设计 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解 ...

CentOS7 查看硬盘情况

lsblk                                  查看分区和磁盘 df -h                                         查看空间使用情 ...

js判断上传图片宽高及文件大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值