Android中的檔案I/O操作

來源:互聯網
上載者:User

  本節分兩部分:

  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]

  

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  

  android:text="開啟"

  android:id="@+id/Button01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  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:text="開啟"

  android:id="@+id/Button01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  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">

  

  

  

  3. 代碼編輯(srcwyfzclMyActivity.java):

  [java]

  package wyf.zcl;

  import java.io.ByteArrayOutputStream; //引入相關包

  import java.io.InputStream; //引入相關包

  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. */

  private 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=loadFromAssert("test.txt");

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

  etContent.setText(contentResult);

  }

  });

  }

  public String loadFromAssert(String fileName){

  String content=null;//結果字串

  try{

  InputStream is=this.getResources().getAssets().open(fileName);//開啟檔案

  int ch=0;

  ByteArrayOutputStream baos = new ByteArrayOutputStream();//實現了一個輸出資料流

  while((ch=is.read())!=-1){

  baos.write(ch); // 將指定的位元組寫入此 byte 數組輸出資料流。

  }

  byte[] buff=baos.toByteArray(); //以 byte 數組的形式返回此輸出資料流的當前內容

  baos.close(); //關閉流

  is.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.ByteArrayOutputStream; //引入相關包

  import java.io.InputStream; //引入相關包

  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. */

  private 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=loadFromAssert("test.txt");

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

  etContent.setText(contentResult);

  }

  });

  }

  public String loadFromAssert(String fileName){

  String content=null;//結果字串

  try{

  InputStream is=this.getResources().getAssets().open(fileName);//開啟檔案

  int ch=0;

  ByteArrayOutputStream baos = new ByteArrayOutputStream();//實現了一個輸出資料流

  while((ch=is.read())!=-1){

  baos.write(ch); // 將指定的位元組寫入此 byte 數組輸出資料流。

  }

  byte[] buff=baos.toByteArray(); //以 byte 數組的形式返回此輸出資料流的當前內容

  baos.close(); //關閉流

  is.close(); //關閉流

  content=new String(buff,"UTF-8"); //設定字串編碼

  }catch(Exception e){

  Toast.makeText(this, "對不起,沒有找到指定檔案!", Toast.LENGTH_SHORT).show();

  }

  return content;

  }

  }

  4.運行效果:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.