扩展格式未检测到3gp文件

时间:2013-04-26 16:10:38

标签: android file 3gp

我在特定扩展程序的SD卡上的文件夹中检查我的文件。一切顺利,除了.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 个答案:

答案 0 :(得分:1)

我想说这是因为枚举名称中的_(下划线),它无法找到匹配项。我假设这是因为枚举名称不能以数字开头。也许如果您按如下方式修改代码,它将起作用:

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

基本上,代码正在查看扩展是否以数字开头,如果是,我们在开头添加下划线以确保它与我们的枚举命名约定匹配

当然,如果你只有一个字符串数组来保存你支持的文件格式,而不是枚举

,这将会简单得多。