设为首页 加入收藏

TOP

Android游戏编程之文件处理
2014-11-24 08:27:20 来源: 作者: 【 】 浏览:0
Tags:Android 游戏 编程 文件 处理

编程肯定不光只是用手机内存还要访问外部存储空间,主要是访问SD卡。先从读取资源文件开始。


我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件。


res/包含应用程序所需的各种资源文件,如icons、用于国际化的字符串文件和用于界面布局的XML文件。它们同样打包于应用文件中。


在这里我们不使用res/文件夹,因为它对我们构造文件集存在限制。而assets/目录才是我们存放的地方,无论如何层次结构的文件夹都可以。


Assets/文件夹中的文件通过一个AssetManager类显示出来,我们可以在应用程序中引用该管理器,如下所示:


AssetManager assetManager = context.getAssets();


一旦我们得到AssetManager,就可以容易地打开文件:


InputStream inputStream = assetManager.open("dir/dir2/filename.txt");


该方法将返回一个普通Java输入流InputStream,通过它我们可以读取任何类型的文件。AssetManager.open()方法的唯一参数是相对于asset目录的文件名,如果路径为dir/dir2/filename.txt,那么在Eclipse里就是assets/dir/dir2/filename.txt。


现在我们从assets/目录下的一个texts子目录来加载txt文件并将其显示在TextView中。


代码如下:


package org.example.ch04_android_basics;


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;


import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.widget.TextView;


public class AssetsTest extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
setContentView(textView);

AssetManager assetManager = getAssets();
InputStream inputStream = null;

try{
inputStream = assetManager.open("texts/myawesometext.txt");
String text = loadTextFile(inputStream);
textView.setText(text);
}catch(IOException e){
textView.setText("Couldn't load file");
}finally{
if(inputStream != null)
try{
inputStream.close();
}catch(IOException e){
textView.setText("Couldn't close file");
}
}
}

public String loadTextFile(InputStream inputStream) throws IOException{
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
byte[] bytes = new byte[4096];
int len = 0;
while((len = inputStream.read(bytes)) > 0)
byteStream.write(bytes, 0, len);
return new String(byteStream.toByteArray(), "UTF-8");
}

}


运行效果如下:



这里用了一个小方法loadTextFile(),用于从InputStream中读取所有字节并将所有字节转换成字符串返回,并采用UTF-8编码。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android游戏编程Manifest文件准备 下一篇Android--查找程序根目录下所有文..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)