어플리케이션을 개발하다 보면 파일을 외장메모리 등에 저장해야 할 필요가 있다.

 

특정 경로를 지정해줬는데, 만약 해당 경로가 존재하지 않으면

 

error: No such file or directory

와 같은 에러를 뱉어내곤 한다.

 

해결하기 위해서는 다음과 같은 방법을 사용한다.

 

 

파일을 생성하기 전에 원하는 경로가 존재하는지 확인하고 만약 경로가 존재하지 않으면 생성한 후

 

파일을 생성할 경로를 반환해주는 메소드이다. 외장메모리의 유무도 확인한다.

 

	// Example
	public static synchronized String GetFilePath(int fileType, int fileId)
	{
		String sdcard = Environment.getExternalStorageState();
		File file = null;
		
		if ( !sdcard.equals(Environment.MEDIA_MOUNTED)) 
		{ 
			// SD카드가 마운트되어있지 않음
			file = Environment.getRootDirectory();
		}
		else
		{
			// SD카드가 마운트되어있음
			file = Environment.getExternalStorageDirectory();
		}

		
		String dir = file.getAbsolutePath() + String.format("/mytestdata/file_%02d", fileType);
		String path = file.getAbsolutePath() + String.format("/mytestdata/file_%02d/myfile%04d.mp4", fileType, fileId);

		file = new File(dir);
		if ( !file.exists() )
		{
			// 디렉토리가 존재하지 않으면 디렉토리 생성
			file.mkdirs();
		}
		
		// 파일 경로 반환
		return path;
	}

 

* 참고로 File 클래스의 멤버메소드에는 mkdirs()와 mkdir()이 있는데

 

 이름 그대로 mkdirs()는 목적지 경로까지 상위폴더를 포함하여 전체 경로를 생성하고, mkdir()은 지정한 폴더 하나만을 생성한다.

 

 둘 다 반환타입은 boolean으로, 경로 생성에 성공하면 true, 이미 존재하는 경로이거나 실패하면 false를 반환한다.

Posted by Kugi
,