Programming/Java

[Java]File Class를 사용해서 Directory 검색하기

라우드니스 2011. 2. 15. 21:04

안드로이드에서 SD카드에 파일을 추가해놓으면 자동으로 리스트에 추가하는것을 하고싶어서 파일관련 기능이 있나 조사하려다가, 그냥 귀찮아서(..) 물어보니 java쪽을 찾아보라고 합니다. 


그래서 찾아보니, 파일 열고 닫을때만 사용하던 File 클래스가 사실 디렉토리도 접근이 가능하다는 것을 보고 얼른 짜서 돌려봤습니다. 물론, 잘 돌아갑니다. 

참고로, 디렉토리를 탐색하는 setFile 메소드는 재귀호출을 통해 자신의 하위 디렉토리까지 검색을 합니다. 

그리고 파일의 확장자를 돌려주려고 만든 getFileNameExtension 메소드는 subString을 사용하기 때문에 웬만해선 바꾸고 싶은데 딱히 떠오르는게 없네요. 

안드로이드 부분은 그냥 테스트해본 것이니 크게 신경쓰실 필요없습니다.


public class mainActivity extends Activity {
    /** Called when the activity is first created. */
	static final String FILEPATH = "/sdcard/test/";
	
    Button getFileName;
    TextView fileName;
    FileList fileList;
    Vector imageMap = new Vector();
	Vector audioMap = new Vector();
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        getFileName = (Button)findViewById(R.id.Button);
        fileName = (TextView)findViewById(R.id.fileName);
        fileList = new FileList();
        
        fileList.setFile(FILEPATH);
        imageMap = fileList.getImageFile();
        audioMap = fileList.getAudioFile();

        getFileName.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				fileName.setText(imageMap.get(1));
			}
        });
    }
}

class FileList {
	private Vector imageMap;
	private Vector audioMap;
	
	public FileList() {
		imageMap = new Vector();
		audioMap = new Vector();
	}
	
	public void setFile(String path) {
		File dir = new File(path);
		File[] fileList = dir.listFiles();
		for(int i=0; i getImageFile() {
		return imageMap;
	}
	
	public Vector getAudioFile() {
		return audioMap;
	}
	
	private String getFileNameExtension(String fileName) {
		return fileName.substring(fileName.lastIndexOf("."+1), fileName.length());
	}
}
반응형