2013-04-26 9 views
0

특정 확장명에서 sd 카드의 폴더에있는 파일을 검사합니다. .3gp 파일이 가능한 형식으로 나열되어 있지만이 코드에서 인식되지 않는 것 외에는 모든 것이 잘됩니다. 무슨 일이 일어날 지 모르는 어떤 생각?확장 형식에서 3gp 파일을 찾을 수 없음

public enum SupportedFileFormat { 
    _3GP("3gp"), MP4("mp4"), M4A("m4a"), AAC("aac"), TS("ts"), FLAC("flac"), MP3(
      "mp3"), MID("mid"), XMF("xmf"), MXMF("mxmf"), RTTTL("rtttl"), RTX(
      "rtx"), OTA("ota"), IMY("imy"), OGG("ogg"), MKV("mkv"), WAV(
      "wav"); 

    private String filesuffix; 

    SupportedFileFormat(String filesuffix) { 
     this.filesuffix = filesuffix; 
    } 

    public String getFilesuffix() { 
     return filesuffix; 
    } 
} 

@SuppressLint("DefaultLocale") 
private boolean checkExtension(String fileName) { 
    String ext = getFileExtension(fileName); 

    if (ext == null) 
     return false; 
    try { 
     if (SupportedFileFormat.valueOf(ext.toUpperCase(Locale.US)) != null) { 
       Log.i("extension", ext); 
      return true; 
     } 
    } catch (IllegalArgumentException e) { 
     return false; 
    } 
    return false; 
} 

public String getFileExtension(String fileName) { 
    int i = fileName.lastIndexOf('.'); 
    if (i > 0) { 
     return fileName.substring(i + 1); 
    } else 
     return null; 
} 
+1

뭔가보다 지원되는 파일 형식을 유지하기 위해 문자열 배열이 있다면 우리의 열거 명명 규칙은 물론

이 훨씬 간단 할 것인가? "_3GP" – musefan

+0

그래, 그게 내가 생각했던 것인데, 밑줄을 지우면 나에게 문법 오류가 생겼어 "토큰 구문 오류 3",이 토큰을 지우자 " –

답변

1

나는 그것이 열거 이름 때문에 _ (밑줄)입니다 말할 것, 일치하는 항목을 찾을 수 없습니다. 열거 형 이름은 숫자로 시작할 수 없기 때문에 이것이라고 가정합니다. 다음과 같이 코드를 수정 아마도 경우 작동합니다 :

if(Character.isDigit(ext.charAt(0))) 
{ 
    ext = "_" + ext; 
} 
if (SupportedFileFormat.valueOf(ext.toUpperCase(Locale.US)) != null) { 
    Log.i("extension", ext); 
    return true; 
} 

기본적으로, 코드는 확장이 숫자로 시작하면 그것과 일치하기 위해 우리는 시작에 밑줄을 추가 않는 경우,보고 찾고 방금 오히려 열거 아마 밑줄과는

+0

이것은 실제로 그렇습니다! 당신의 솔루션은 매우 논리적으로 들립니다. 문자열 배열을 가진 솔루션이 더 빠를 것이라고 생각합니까? 그렇지 않습니까? @musefan –

+0

@MatthiasVanb : 그것이 더 빠르거나 빠를 지 모르겠다. 아마 다른 방법이 될 수는 없을 것이다. 그러나 그것은 당신이 밑줄에 대해 걱정할 필요가 없다는 것을 의미 할 것입니다. 더 편하게 느끼고, 이해하기 쉬운 것을하십시오. – musefan