투케이2K

109. (AndroidStudio/android/java) 파일 이름을 사용해서 파일이 저장된 경로 확인 - File , Environment 본문

Android

109. (AndroidStudio/android/java) 파일 이름을 사용해서 파일이 저장된 경로 확인 - File , Environment

투케이2K 2021. 4. 21. 15:46

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//TODO ====== [AndroidManifest.xml 파일] ======
//TODO ==== 퍼미션 정의 부분 ====
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


//TODO ==== application 부분 ====
android:requestLegacyExternalStorage="true"







//TODO ====== [안드로이드 파일명으로 경로 확인 메소드] ======
public String getFilePath(String name){
	//TODO 리턴 변수 선언 실시
	String returnData = "";
	try {
		Log.d("---","---");
		Log.d("//===========//","================================================");
		Log.d("","\n"+"[A_File > getFilePath() 메소드 : 파일 경로 찾기 수행]");
		Log.d("","\n"+"[파일명 : "+String.valueOf(name)+"]");
		Log.d("//===========//","================================================");
		Log.d("---","---");

		//TODO 사용자가 입력한 파일명에 확장자가 붙어있는지 확인
		boolean file_extensionFlag = false;
		String file_extensionArray[] = {
				".bmp",".gif",".jpeg",".jpg",".png",".psd",".pic",
				".raw",".tiff",".avi",".flv",".mkv",".mov",".mp3",
				".mp4",".wav","wma",".doc",".docx",".html",".hwp",
				".pdf",".txt",".exe",".zip"
		};

		//TODO for 반복문을 수행하면서 파일 확장자를 포함하는지 확인
		for(int i=0; i<file_extensionArray.length; i++){
			if(name.contains(file_extensionArray[i])){ //TODO 파일 확장자가 포함된 경우
				file_extensionFlag = true;
				break; //TODO for 문 탈출
			}
		}

		if(file_extensionFlag == true){ //TODO 파일 확장자가 포함된 경우
			//TODO 모바일 디렉토리 명을 배열에 담는다
			File dir = Environment.getExternalStorageDirectory();
			Queue<File> directoryFileList = new LinkedList<>();
			//ArrayList<File> inFiles = new ArrayList<>();

			directoryFileList.addAll(Arrays.asList(dir.listFiles()));

			//TODO 파일 찾은 결과 값을 저장하기 위한 변수 선언
			boolean fileContainsFlag = false;

			//TODO 무한 루프를 돌면서 파일 찾기 실시 (저장된 디렉토리를 모두 검수할때까지 수행)
			while(!directoryFileList.isEmpty()){
				File file = directoryFileList.remove();

				if(file.isDirectory()){
					directoryFileList.addAll(Arrays.asList(file.listFiles()));
				}
				else {
					//TODO 내가 찾을려는 파일 이름을 찾은 경우
					if(file.getName().contains(name)){
						//String tempPath = file.getParent() + File.separator + name;
						String tempPath = file.getPath();
						String checkName = "/"+name;
						if(tempPath.contains(checkName) == false){
							tempPath = tempPath.replace(name,checkName);
						}
						Log.d("---","---");
						Log.w("//===========//","================================================");
						Log.d("","\n"+"[A_File > getFilePath() 메소드 : 파일 경로 찾기 성공]");
						Log.d("","\n"+"[파일명 : "+String.valueOf(name)+"]");
						Log.d("","\n"+"[경로 : "+String.valueOf(tempPath)+"]");
						Log.d("","\n"+"[설명 : "+"파일 경로 확인을 성공했습니다"+"]");
						Log.w("//===========//","================================================");
						Log.d("---","---");
						fileContainsFlag = true; //TODO 파일 찾았다는 결과 저장
						returnData = tempPath; //TODO 파일 경로 저장 실시
						break; //TODO While 문 탈출
					}
				}
			}

			//TODO 파일을 못찾은 경우
			if(fileContainsFlag == false){
				Log.d("---","---");
				Log.e("//===========//","================================================");
				Log.d("","\n"+"[A_File > getFilePath() 메소드 : 파일 경로 찾기 실패]");
				Log.d("","\n"+"[파일명 : "+String.valueOf(name)+"]");
				Log.d("","\n"+"[설명 : "+"파일을 찾지 못했습니다"+"]");
				Log.e("//===========//","================================================");
				Log.d("---","---");
			}
		}
		else{ //TODO 파일 확장자가 포함되지 않은 경우
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_File > getFilePath() 메소드 : 파일 경로 찾기 실패]");
			Log.d("","\n"+"[파일명 : "+String.valueOf(name)+"]");
			Log.d("","\n"+"[설명 : "+"파일 확장자를 포함하지 않았습니다"+"]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
	return returnData;
}

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

반응형
Comments