本節分兩部分:
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.運行效果: