android檔案管理實現源碼

來源:互聯網
上載者:User

Activity:
Java代碼 
package irdc.ex04_21; 
 
/* import相關class */ 
import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
 
public class EX04_21 extends ListActivity 

  /* 對象聲明 
     items:存放顯示的名稱
     paths:存放檔案路徑
     rootPath:起始目錄
  */ 
  private List<String> items=null; 
  private List<String> paths=null; 
  private String rootPath="/"; 
  private TextView mPath; 
   
  /** Called when the activity is first created. */ 
  @Override 
  protected void onCreate(Bundle icicle) 
  { 
    super.onCreate(icicle); 
     
    /* 載入main.xml Layout */ 
    setContentView(R.layout.main); 
    mPath=(TextView)findViewById(R.id.mPath); 
     
    getFileDir(rootPath); 
  } 
   
  /* 取得檔案架構的method */ 
  private void getFileDir(String filePath) 
  { 
    /* 設定目前所在路徑 */ 
    mPath.setText(filePath); 
     
    items=new ArrayList<String>(); 
    paths=new ArrayList<String>();   
    File f=new File(filePath);   
    File[] files=f.listFiles(); 
 
    if(!filePath.equals(rootPath)) 
    { 
      /* 第一筆設定為[回到根目錄] */ 
      items.add("Back to "+rootPath); 
      paths.add(rootPath); 
      /* 第二筆設定為[回上層] */ 
      items.add("Back to ../"); 
      paths.add(f.getParent()); 
    } 
    /* 將所有檔案加入ArrayList中 */ 
    for(int i=0;i<files.length;i++) 
    { 
      File file=files[i]; 
      items.add(file.getName()); 
      paths.add(file.getPath()); 
    } 
     
    /* 聲明一ArrayAdapter,使用file_row這個Layout,
                  並將Adapter設定給此ListActivity */ 
    ArrayAdapter<String> fileList =  
       new ArrayAdapter<String>(this,R.layout.file_row, items); 
    setListAdapter(fileList); 
  } 
   
  /* 設定ListItem被按下時要做的動作 */ 
  @Override 
  protected void onListItemClick(ListView l,View v,int position,long id) 
  { 
    File file = new File(paths.get(position)); 
    if(file.canRead()) 
    { 
      if (file.isDirectory()) 
      { 
        /* 如果是檔案夾就再進去讀取 */ 
        getFileDir(paths.get(position)); 
      } 
      else 
      { 
        /* 如果是檔案,則彈出AlertDialog */ 
        new AlertDialog.Builder(this) 
            .setTitle("Message") 
            .setMessage("["+file.getName()+"] is File!") 
            .setPositiveButton("OK", 
              new DialogInterface.OnClickListener() 
              { 
                public void onClick(DialogInterface dialog,int which) 
                { 
                } 
              }).show();          
      } 
    } 
    else 
    { 
      /* 彈出AlertDialog顯示許可權不足 */ 
      new AlertDialog.Builder(this) 
          .setTitle("Message") 
          .setMessage("許可權不足!") 
          .setPositiveButton("OK", 
            new DialogInterface.OnClickListener() 
            { 
              public void onClick(DialogInterface dialog,int which) 
              { 
              } 
            }).show();      
    } 
  } 

layout:
file_row.xml
Java代碼 
<?xml version="1.0" encoding="utf-8"?> 
<TextView  
  android:id="@+id/text1" 
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="wrap_content" 
  android:layout_height="20px" 
  android:textSize="14sp" 
/> 

main.xml
Java代碼 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:orientation="vertical" 

  <TextView  
    android:id="@+id/mPath" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5px" 
    android:textSize="18sp" 
    android:textColor="@drawable/blue" 
  /> 
  <ListView  
    android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
  /> 
</LinearLayout> 

作者“asuschb”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.