加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

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编码。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读