2012年7月17日 星期二

IO: (2) SDCARD


IO: (2) 僅列出SDCARD裡檔案的名稱(不包括資料夾)


public class OnlyFileNamesInSDCardActivity extends Activity {
    /** Called when the activity is first created. */

private final String SD_PATH = Environment.getExternalStorageDirectory().getAbsolutePath();
private final String FILE_PATH = "/fileio";
private final String FILE_NAME = "test02.txt";
private final String ENCODING = "UTF-8";

FileInputStream fis = null;

TextView tv;
ListView lv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
     
     
        //列出Sdcard 裡的夾子和檔案,放上LISTVIEW
        try {
                //找出SD的入徑
        File sdcardPATH = Environment.getExternalStorageDirectory();
               //用list(),將SD裡的資料夾和檔案以字串的方式收集在array
//         String [] fileNamesArrayStr = sdcardPATH.list(); 

        //listFiles()則會加上完整入徑,列出入徑及資料夾+檔名的集合,存在File格是的陣列
        File [] fileArray = sdcardPATH.listFiles();
         /*** 如果要制訂特別的入徑 ***/
        // File myDataPath = new File (sdcardPATH.getAbsolutePath() + "/fileio");
        // File [] fileArray = myDataPath.listFiles(); //不要忘了要計算、減掉入徑的字元數


        String  tempStr = ""; //初始化
       
        for (int i=0; i < fileArray.length; i++) {//只收集檔案,不要資料夾,但每筆資料會產生入徑(但無法用 fileNamesArrayStr來做,因為它是字串,無法判定是否為檔案還是資料夾
        if (fileArray[i].isFile()) {
                               //用來接收每一筆的檔案名字串,但是會包含前面的入徑:/mnt/sdcard/
        String str = "";
        str = fileArray[i].toString();
                               // 用來去除多餘的入徑字串:/mnt/sdcard/
        String strSub = "";
                                 //利用substring 去掉每筆最前面的12個字元:/mnt/sdcard/
        strSub = str.substring(12, str.length()).toString();
                                // 以 "--"為記號,分隔每筆處理好的資料,存成一筆字串
        tempStr += "--" + strSub;
       
        }
        }

         //設一變數來處理最後的"--"兩個字元,讓它不會在ListView上多產生一個空的cell
          String result = "";
          Result = tempStr.substring(0, tempStr.length()-2);
        //以"--"為分節點將整筆字串切割成數個字串儲存成字串陣列,以顯示在螢幕上
        String[] strings = TextUtils.split(reselt, "--");
       
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);
        lv = (ListView) findViewById(R.id.listView1);
        lv.setAdapter(adapter);
       
        } catch (Exception e) {
        e.printStackTrace();
        }
 

     
    }// end of onCreate
 
 
}