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
}
訂閱:
文章 (Atom)