0
안드로이드와 같은 j2me의 모든 .mp3 파일 목록을 가져 오는 방법이 있습니까? 모든 mp3 파일을 가져 오는 가장 좋은 방법은 무엇입니까?j2me에서 모든 .mp3 파일 (미디어 카드와 장치 메모리 모두)을 얻는 방법은 무엇입니까?
감사합니다.
안드로이드와 같은 j2me의 모든 .mp3 파일 목록을 가져 오는 방법이 있습니까? 모든 mp3 파일을 가져 오는 가장 좋은 방법은 무엇입니까?j2me에서 모든 .mp3 파일 (미디어 카드와 장치 메모리 모두)을 얻는 방법은 무엇입니까?
감사합니다.
import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.microedition.io.Connector;
import javax.microedition.io.file.*;
/**
* @author crazywizard
*/
public class RootMIDlet extends MIDlet implements CommandListener{
private List list;
private Command exitCommand;
private Hashtable allowed_types;
public RootMIDlet(){
/* Construct MIDlet */
//Define the file types of interest here
allowed_types = new Hashtable();
allowed_types.put("mp3", "audio/mp3");
}
public void startApp() {
list = new List("My Files", List.IMPLICIT);
exitCommand = new Command("Exit", Command.EXIT, 0);
list.addCommand(exitCommand);
list.setCommandListener(this);
Display.getDisplay(this).setCurrent(list);
getRootList();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void getRootList(){
//Get ALL available filesystem mounts
Enumeration drives = FileSystemRegistry.listRoots();
while(drives.hasMoreElements()){
//Iterate through the drives
String driveString = drives.nextElement().toString();
list.append("Searching "+driveString, null);
getFileList("file:///"+driveString);
}
}//--End of getRootList()
public void getFileList(String path){
try {
//Open path
FileConnection fc = (FileConnection)Connector.open(path, Connector.READ);
//Get list of ALL files and dirs
Enumeration filelist = fc.list(); //Get Hidden files as well --fc.list("*", true);
while(filelist.hasMoreElements()){
String filename = (String)filelist.nextElement();
FileConnection fc1 = (FileConnection)Connector.open(path+filename, Connector.READ);
//Check for dirs
if(fc1.isDirectory()){
//Apply recursion here
getFileList("file://"+fc1.getPath()+filename); //Note use of *double // instead of triple ///. Adjust accordingly according to phone platform
}else{
//Filter for only allowed types == .mp3
String file_type = getFileType(filename).toLowerCase();
if(!allowed_types.containsKey(file_type)){
//Do Nothing and Pass
continue;
}
list.append(fc1.getPath()+filename, null);
}
}
//Clean resources
fc.close();
} catch (IOException ioe) {
ioe.printStackTrace();
Display.getDisplay(this).setCurrent(new Alert("Error", ioe.toString(), null, AlertType.ERROR));
} catch (Exception ex) {
ex.printStackTrace();
Display.getDisplay(this).setCurrent(new Alert("Error", ex.toString(), null, AlertType.ERROR));
}
}
/* Helper Method */
private String getFileType(String fileName){
//Get file extension from fileName
char ch = '.';
int index = fileName.lastIndexOf((int)ch);
return fileName.substring(index+1);
}//--End of getFileType(String)
public void commandAction(Command c, Displayable d) {
if(c == exitCommand){
notifyDestroyed();
}
}
}