Android游戏编程之文件解决
发布时间:2021-11-21 21:06:38 所属栏目:教程 来源:互联网
导读:戏编程肯定不光只是用手机内存还要访问外部存储空间,主要是访问SD卡。先从读取资源文件开始。 我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件。 assets/用于存储各种应用程序中需要的文件(例如配置文件或音频文件等),这些文件会打包在Andro
戏编程肯定不光只是用手机内存还要访问外部存储空间,主要是访问SD卡。先从读取资源文件开始。 我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件。 assets/用于存储各种应用程序中需要的文件(例如配置文件或音频文件等),这些文件会打包在Android应用程序中。 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编码。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |