Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

안드로이드(Android) 저장소(Sdcard) 에서 읽어온 파일이 이미지인지 판단하기

 

개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2

 

안드로이드에서 이미지를 표현하기 위해 SDCARD 에서

파일을 읽어옵니다. 그런데 여기에 이미지만 있는

것이 아닙니다. 이미지가 아닌 파일을 ImageView

표현을 하게 되면 에러가 나므로 미연에 방지를

해야합니다.

 

 

이전 갤러리 만드는 샘플에서 SDCARD

이미지를 불러오는 함수를 수정합니다.

이전 이미지 불러오는 함수는 다음과 같습니다.

 

// SDCARD 에 이미지를 가져옵니다. 
private void ReadSDCard() {
	List<String> tFileList = new ArrayList<String>();
	File f = new File(
			Environment.getExternalStorageDirectory().getPath() 
			+ "/Pictures/");

	File[] files = f.listFiles();

	for (int i = 0; i < files.length; i++) {
		File file = files[i];
		tFileList.add(file.getPath());
	}
	imgListPath = tFileList;
}

 

여기에 이미지가 아닌 파일을 제외하기 위해

코드를 추가합니다. 먼저 String curFile = file.getPath();

로 전체 파일이름을 포함한 주소를 읽는다

그리고 파일명의 확장자를 잘라내서 소문자로 바꿉니다.

 

String curFile = file.getPath();
String ext = curFile.substring(
		curFile.lastIndexOf(".") + 1,
		curFile.length()).toLowerCase(Locale.KOREA);

 

이렇게 소문자로 바꾼후 jpg, gif, png 만 이미지리스트에

추가합니다.


// SDCARD 에 이미지를 가져옵니다.
private void ReadSDCard() {
	List<String> tFileList = new ArrayList<String>();
	File f = new File(Environment.getExternalStorageDirectory()
			.getPath() + "/Pictures/");

	File[] files = f.listFiles();

	for (int i = 0; i < files.length; i++) {
		File file = files[i];

		String curFile = file.getPath();
		String ext = curFile.substring(
				curFile.lastIndexOf(".") + 1,
				curFile.length()).toLowerCase(Locale.KOREA);
		
		if (ext.equals("jpg") 
				|| ext.equals("gif") 
				|| ext.equals("png")){
			
			tFileList.add(file.getPath());
		}
	}
	imgListPath = tFileList;
}

 

반응형
Posted by 녹두장군1
,