在我的應用程序中,當用戶想要上傳音頻時,該用戶應該只能選擇.mp3擴展名文件。如果用戶選擇其他文件,如.ppt,.pdf,則不允許。如何從整個SD卡中只選擇.mp3擴展文件
我有這個批准的代碼從SD卡的文件探索:Choose file dialog。
但我只想要.mp3擴展名文件或.mp3擴展名文件列表。
那我該怎麼辦?
在我的應用程序中,當用戶想要上傳音頻時,該用戶應該只能選擇.mp3擴展名文件。如果用戶選擇其他文件,如.ppt,.pdf,則不允許。如何從整個SD卡中只選擇.mp3擴展文件
我有這個批准的代碼從SD卡的文件探索:Choose file dialog。
但我只想要.mp3擴展名文件或.mp3擴展名文件列表。
那我該怎麼辦?
也許你可以檢查文件,這樣
File f = new File("/sdcard/");
for (File file : f.listFiles())
{
if(file.getName().endsWith(".mp3"))
{
// do something with them, add them to list or whatever
}
}
Thanx Marko Niciforovic ...我已經解決了我的解決方案..! :) – CKnDROID 2013-03-26 11:12:18
沒問題,很高興如果我的回答有點幫助:) – 2013-03-26 11:13:28
檢查文件模式,然後進行比較,如果是MP3然後添加到ArrayList中,檢查以下函數,該函數將返回mp3
名單。
Vector<String> mStrings =new Vector<String>();
int mTotalimage=0;
public void fileExtension(File dir) {
String mp3Pattern = ".mp3";
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
String mCheck=listFile[i].getAbsoluteFile().toString();
mCheck=mCheck.substring(mCheck.lastIndexOf("/")+1);
System.out.println("listFile[i].getAbsoluteFile().toString()"+listFile[i].getAbsoluteFile().toString());
System.out.println("mCheck..."+mCheck);
if (listFile[i].isDirectory() && !(mCheck.startsWith("."))) {
fileExtension(listFile[i]);
} else {
//fetch jpg from folders.
if (listFile[i].getName().endsWith(mp3Pattern)){
mStrings.add(listFile[i].getAbsolutePath().toString());
mTotalimage++;
//fetch png image from folders.
}
}
}
}
System.out.println("size on return......."+mStrings.size());
}
Thanx RobinHood,從你的上面的代碼我已經解決了我的問題。我只是輕微改變了一行: return(sel.isDirectory()|| filename.endsWith(「。mp3」)); 我也理解你的代碼。Thanx爲了給出新的想法。 :) – CKnDROID 2013-03-26 11:13:50
,當我與存儲在我的資產很多文件(文件類型的不同以及)工作文件夾,選擇與我使用dyanamically得到名稱,並在名稱末尾附加」 .MP3" 特定名稱的MP3文件。所以這種方法爲我工作。 getAssets()。openFd(audioName +「.mp3」); 類似的東西可以爲你工作,尊重存儲在SD卡中的資源。 – 2013-03-26 10:24:53
您是否嘗試過您提供的鏈接的接受答案?它似乎滿足您的需求相當好 – nicopico 2013-03-26 10:28:25
嗨.. nicopico ..是的,我做了..但我只想要.mp3文件..或者用戶只能選擇.mp3文件或從SD卡獲取所有.mp3文件列表時用戶想要附加並上傳。 – CKnDROID 2013-03-26 10:44:47