您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 安卓开发 >> 正文

Android中的文件I/O操作

作者:佚名    责任编辑:admin    更新时间:2022-06-22

  本节分两部分:

  1.访问SD卡.

  2.访问手机中的存储文件夹.

  3.读取assets中的文件.

  一.访问SD卡:

  1.界面编辑(reslayoutmain.xml):

  [java]

  

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  

  android:id="@+id/Button01"

  android:layout_width="128dp"

  android:layout_height="wrap_content"

  android:text="打开" >

  

  

  android:id="@+id/button1"

  android:layout_width="125dp"

  android:layout_height="wrap_content"

  android:text="测试按钮" />

  

  android:id="@+id/ScrollView01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  android:editable="false"

  android:id="@+id/EditText01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  

  

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  

  android:id="@+id/Button01"

  android:layout_width="128dp"

  android:layout_height="wrap_content"

  android:text="打开" >

  

  

  android:id="@+id/button1"

  android:layout_width="125dp"

  android:layout_height="wrap_content"

  android:text="测试按钮" />

  

  android:id="@+id/ScrollView01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  android:editable="false"

  android:id="@+id/EditText01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  

  2. 代码编辑(srcwyfzclMyActivity.java):

  [java]

  package wyf.zcl;

  import java.io.File; //引入相关包

  import java.io.FileInputStream; //引入相关包

  import android.app.Activity; //引入相关包

  import android.os.Bundle; //引入相关包

  import android.view.View; //引入相关包

  import android.widget.Button; //引入相关包

  import android.widget.EditText; //引入相关包

  import android.widget.Toast; //引入相关包

  public class MyActivity extends Activity {

  /** Called when the activity is first created. */

  Button but; //打开按钮引用

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  but=(Button)findViewById(R.id.Button01);

  //打开按钮初始化

  but.setOnClickListener(new View.OnClickListener() {

  //为打开按钮添加监听器

  @Override

  public void onClick(View v) {

  String contentResult=loadContentFromSDCard("歌词.txt");

  //调用读取文件方法,获得文件内容

  EditText etContent=(EditText)findViewById(R.id.EditText01);

  //实例化EditText

  etContent.setText(contentResult);

  //设置EditText的内容

  }

  });

  }

  public String loadContentFromSDCard(String fileName){

  //从SD卡读取内容

  String content=null; //sd卡 的内容字符串

  try{

  File f=new File("/sdcard/ebook/"+fileName);//待读取的文件

  int length=(int)f.length();

  byte[] buff=new byte[length];

  FileInputStream fis=new FileInputStream(f);

  fis.read(buff); // 从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中

  fis.close(); //关闭此输入流并释放与此流关联的所有系统资源

  content=new String(buff,"UTF-8");

  }catch(Exception e){

  Toast.makeText(this, "对不起,没有找到文件",

  Toast.LENGTH_SHORT).show();

  }

  return content;

  }

  }

  package wyf.zcl;

  import java.io.File; //引入相关包

  import java.io.FileInputStream; //引入相关包

  import android.app.Activity; //引入相关包

  import android.os.Bundle; //引入相关包

  import android.view.View; //引入相关包

  import android.widget.Button; //引入相关包

  import android.widget.EditText; //引入相关包

  import android.widget.Toast; //引入相关包

  public class MyActivity extends Activity {

  /** Called when the activity is first created. */

  Button but; //打开按钮引用

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  but=(Button)findViewById(R.id.Button01);

  //打开按钮初始化

  but.setOnClickListener(new View.OnClickListener() {

  //为打开按钮添加监听器

  @Override

  public void onClick(View v) {

  String contentResult=loadContentFromSDCard("歌词.txt");

  //调用读取文件方法,获得文件内容

  EditText etContent=(EditText)findViewById(R.id.EditText01);

  //实例化EditText

  etContent.setText(contentResult);

  //设置EditText的内容

  }

  });

  }

  public String loadContentFromSDCard(String fileName){

  //从SD卡读取内容

  String content=null; //sd卡 的内容字符串

  try{

  File f=new File("/sdcard/ebook/"+fileName);//待读取的文件

  int length=(int)f.length();

  byte[] buff=new byte[length];

  FileInputStream fis=new FileInputStream(f);

  fis.read(buff); // 从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中

  fis.close(); //关闭此输入流并释放与此流关联的所有系统资源

  content=new String(buff,"UTF-8");

  }catch(Exception e){

  Toast.makeText(this, "对不起,没有找到文件",

  Toast.LENGTH_SHORT).show();

  }

  return content;

  }

  }

  运行效果如下:

  二.访问手机中的存储文件夹:

  访问手机中的文件夹和访问SD卡一样,只需要指明具体位置即可,只是权限这一块需要提升。

  三.读取assets中的文件:

  1.在项目工程的"assets"目录下,新建一个UTF8编码的文本文件"test.txt"作为测试的对象。

  2.界面编辑(reslayoutmain.xml):

  [java]