首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在扩展格式上检测到3gp文件

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

Stack Overflow用户
提问于 2013-04-27 00:10:38
回答 1查看 304关注 0票数 0

我在SD卡上的某个文件夹中检查某些扩展名的文件。一切正常,除了.3gp文件似乎不能被这段代码识别,尽管它是以可能的格式列出的。知道可能是什么原因造成的吗?

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 00:16:19

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

代码语言:javascript
复制
if(Character.isDigit(ext.charAt(0)))
{
    ext = "_" + ext;
}
if (SupportedFileFormat.valueOf(ext.toUpperCase(Locale.US)) != null) {
    Log.i("extension", ext);
    return true;
}

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

当然,如果只有一个字符串数组来保存所支持的文件格式,而不是一个枚举,就会简单得多

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16240787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档