Android 按关键字或文件后缀搜索文件

来源:互联网 发布:北方广电网络 编辑:程序博客网 时间:2024/06/05 20:32

查找的情况分为两种:关键字、文件类型。


按关键字查找:

 private List searchKeyWord(Context context, String keyword) {        List fileList = new ArrayList<>();        ContentResolver resolver = context.getContentResolver();        Uri uri = MediaStore.Files.getContentUri("external");        Cursor cursor = resolver.query(uri,                new String[]{MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.SIZE},                MediaStore.Files.FileColumns.TITLE + " LIKE '%" + keyword + "%'",                null, null);        if (cursor != null) {            while (cursor.moveToNext()) {                FileBean bean = new FileBean();                String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA));                bean.setName(path.substring(path.lastIndexOf("/") + 1));                bean.setSize(cursor.getLong(cursor.getColumnIndexOrThrow(                        MediaStore.Files.FileColumns.SIZE)));                fileList.add(bean);            }        }        cursor.close();        return fileList;    }
代码主要通过 ContentResolver 对系统数据库进行查询。
/**     * Query the given URI, returning a {@link Cursor} over the result set.     * <p>     * For best performance, the caller should follow these guidelines:     * <ul>     * <li>Provide an explicit projection, to prevent     * reading data from storage that aren't going to be used.</li>     * <li>Use question mark parameter markers such as 'phone=?' instead of     * explicit values in the {@code selection} parameter, so that queries     * that differ only by those values will be recognized as the same     * for caching purposes.</li>     * </ul>     * </p>     *     * @param uri The URI, using the content:// scheme, for the content to     *         retrieve.     * @param projection A list of which columns to return. Passing null will     *         return all columns, which is inefficient.     * @param selection A filter declaring which rows to return, formatted as an     *         SQL WHERE clause (excluding the WHERE itself). Passing null will     *         return all rows for the given URI.     * @param selectionArgs You may include ?s in selection, which will be     *         replaced by the values from selectionArgs, in the order that they     *         appear in the selection. The values will be bound as Strings.     * @param sortOrder How to order the rows, formatted as an SQL ORDER BY     *         clause (excluding the ORDER BY itself). Passing null will use the     *         default sort order, which may be unordered.     * @return A Cursor object, which is positioned before the first entry, or null     * @see Cursor     */    public final @Nullable Cursor query(@RequiresPermission.Read @NonNull Uri uri,            @Nullable String[] projection, @Nullable String selection,            @Nullable String[] selectionArgs, @Nullable String sortOrder) {        return query(uri, projection, selection, selectionArgs, sortOrder, null);    }
projection:你希望查询到的内容。
selection:查询条件。
selectionArgs:查询条件里面如果有?,就把?的值放进这个数组里面。
sortOrder:排序。

这里通过关键字进行查找。查询语句请参照上方或自行百度修改。
获取文件名这里并没有直接使用 MediaStore.Files.FileColumns.TITLE,而是使用 MediaStore.Files.FileColumns.DATA 获取到文件路径再获取到文件名。
因为使用 MediaStore.Files.FileColumns.TITLE 获取的到文件名没有文件格式。

按文件类型查找:
 private List searchType(Context context, String type) {        List fileList = new ArrayList<>();        String t = "";        ContentResolver resolver = context.getContentResolver();        Uri uri = MediaStore.Files.getContentUri("external");        for (int i = 0; i < MIMETable.length; i++) {            if (type.equals(MIMETable[i][0])) {                t = MIMETable[i][1];            }        }        Cursor cursor = resolver.query(uri,                new String[]{MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.SIZE,},                MediaStore.Files.FileColumns.MIME_TYPE + " = '" + t + "'",                null, null);        if (cursor != null) {            while (cursor.moveToNext()) {                FileBean bean = new FileBean();                String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA));                bean.setName(path.substring(path.lastIndexOf("/") + 1));                bean.setSize(cursor.getLong(cursor.getColumnIndexOrThrow(                        MediaStore.Files.FileColumns.SIZE)));                fileList.add(bean);            }        }        cursor.close();        return fileList;    }

通过文件的后缀获取MIME,然后到数据库查找。

MIME类型可能有点不对,需要的自己百度一份最新的。

MIME列表:

  /**     * -- MIME 列表 --     */    private static final String[][] MIMETable =            {                    // --{后缀名, MIME类型}   --                    {"3gp", "video/3gpp"},                    {"3gpp", "video/3gpp"},                    {"aac", "audio/x-mpeg"},                    {"amr", "audio/x-mpeg"},                    {"apk", "application/vndandroidpackage-archive"},                    {"avi", "video/x-msvideo"},                    {"aab", "application/x-authoware-bin"},                    {"aam", "application/x-authoware-map"},                    {"aas", "application/x-authoware-seg"},                    {"ai", "application/postscript"},                    {"aif", "audio/x-aiff"},                    {"aifc", "audio/x-aiff"},                    {"aiff", "audio/x-aiff"},                    {"als", "audio/x-alpha5"},                    {"amc", "application/x-mpeg"},                    {"ani", "application/octet-stream"},                    {"asc", "text/plain"},                    {"asd", "application/astound"},                    {"asf", "video/x-ms-asf"},                    {"asn", "application/astound"},                    {"asp", "application/x-asap"},                    {"asx", " video/x-ms-asf"},                    {"au", "audio/basic"},                    {"avb", "application/octet-stream"},                    {"awb", "audio/amr-wb"},                    {"bcpio", "application/x-bcpio"},                    {"bld", "application/bld"},                    {"bld2", "application/bld2"},                    {"bpk", "application/octet-stream"},                    {"bz2", "application/x-bzip2"},                    {"bin", "application/octet-stream"},                    {"bmp", "image/bmp"},                    {"c", "text/plain"},                    {"class", "application/octet-stream"},                    {"conf", "text/plain"},                    {"cpp", "text/plain"},                    {"cal", "image/x-cals"},                    {"ccn", "application/x-cnc"},                    {"cco", "application/x-cocoa"},                    {"cdf", "application/x-netcdf"},                    {"cgi", "magnus-internal/cgi"},                    {"chat", "application/x-chat"},                    {"clp", "application/x-msclip"},                    {"cmx", "application/x-cmx"},                    {"co", "application/x-cult3d-object"},                    {"cod", "image/cis-cod"},                    {"cpio", "application/x-cpio"},                    {"cpt", "application/mac-compactpro"},                    {"crd", "application/x-mscardfile"},                    {"csh", "application/x-csh"},                    {"csm", "chemical/x-csml"},                    {"csml", "chemical/x-csml"},                    {"css", "text/css"},                    {"cur", "application/octet-stream"},                    {"doc", "application/msword"},                    {"dcm", "x-lml/x-evm"},                    {"dcr", "application/x-director"},                    {"dcx", "image/x-dcx"},                    {"dhtml", "text/html"},                    {"dir", "application/x-director"},                    {"dll", "application/octet-stream"},                    {"dmg", "application/octet-stream"},                    {"dms", "application/octet-stream"},                    {"dot", "application/x-dot"},                    {"dvi", "application/x-dvi"},                    {"dwf", "drawing/x-dwf"},                    {"dwg", "application/x-autocad"},                    {"dxf", "application/x-autocad"},                    {"dxr", "application/x-director"},                    {"ebk", "application/x-expandedbook"},                    {"emb", "chemical/x-embl-dl-nucleotide"},                    {"embl", "chemical/x-embl-dl-nucleotide"},                    {"eps", "application/postscript"},                    {"epub", "application/epub+zip"},                    {"eri", "image/x-eri"},                    {"es", "audio/echospeech"},                    {"esl", "audio/echospeech"},                    {"etc", "application/x-earthtime"},                    {"etx", "text/x-setext"},                    {"evm", "x-lml/x-evm"},                    {"evy", "application/x-envoy"},                    {"exe", "application/octet-stream"},                    {"fh4", "image/x-freehand"},                    {"fh5", "image/x-freehand"},                    {"fhc", "image/x-freehand"},                    {"fif", "image/fif"},                    {"fm", "application/x-maker"},                    {"fpx", "image/x-fpx"},                    {"fvi", "video/isivideo"},                    {"flv", "video/x-msvideo"},                    {"gau", "chemical/x-gaussian-input"},                    {"gca", "application/x-gca-compressed"},                    {"gdb", "x-lml/x-gdb"},                    {"gif", "image/gif"},                    {"gps", "application/x-gps"},                    {"gtar", "application/x-gtar"},                    {"gz", "application/x-gzip"},                    {"gif", "image/gif"},                    {"gtar", "application/x-gtar"},                    {"gz", "application/x-gzip"},                    {"h", "text/plain"},                    {"hdf", "application/x-hdf"},                    {"hdm", "text/x-hdml"},                    {"hdml", "text/x-hdml"},                    {"htm", "text/html"},                    {"html", "text/html"},                    {"hlp", "application/winhlp"},                    {"hqx", "application/mac-binhex40"},                    {"hts", "text/html"},                    {"ice", "x-conference/x-cooltalk"},                    {"ico", "application/octet-stream"},                    {"ief", "image/ief"},                    {"ifm", "image/gif"},                    {"ifs", "image/ifs"},                    {"imy", "audio/melody"},                    {"ins", "application/x-net-install"},                    {"ips", "application/x-ipscript"},                    {"ipx", "application/x-ipix"},                    {"it", "audio/x-mod"},                    {"itz", "audio/x-mod"},                    {"ivr", "i-world/i-vrml"},                    {"j2k", "image/j2k"},                    {"jad", "text/vndsunj2meapp-descriptor"},                    {"jam", "application/x-jam"},                    {"jnlp", "application/x-java-jnlp-file"},                    {"jpe", "image/jpeg"},                    {"jpz", "image/jpeg"},                    {"jwc", "application/jwc"},                    {"jar", "application/java-archive"},                    {"java", "text/plain"},                    {"jpeg", "image/jpeg"},                    {"jpg", "image/jpeg"},                    {"js", "application/x-javascript"},                    {"kjx", "application/x-kjx"},                    {"lak", "x-lml/x-lak"},                    {"latex", "application/x-latex"},                    {"lcc", "application/fastman"},                    {"lcl", "application/x-digitalloca"},                    {"lcr", "application/x-digitalloca"},                    {"lgh", "application/lgh"},                    {"lha", "application/octet-stream"},                    {"lml", "x-lml/x-lml"},                    {"lmlpack", "x-lml/x-lmlpack"},                    {"log", "text/plain"},                    {"lsf", "video/x-ms-asf"},                    {"lsx", "video/x-ms-asf"},                    {"lzh", "application/x-lzh "},                    {"m13", "application/x-msmediaview"},                    {"m14", "application/x-msmediaview"},                    {"m15", "audio/x-mod"},                    {"m3u", "audio/x-mpegurl"},                    {"m3url", "audio/x-mpegurl"},                    {"ma1", "audio/ma1"},                    {"ma2", "audio/ma2"},                    {"ma3", "audio/ma3"},                    {"ma5", "audio/ma5"},                    {"man", "application/x-troff-man"},                    {"map", "magnus-internal/imagemap"},                    {"mbd", "application/mbedlet"},                    {"mct", "application/x-mascot"},                    {"mdb", "application/x-msaccess"},                    {"mdz", "audio/x-mod"},                    {"me", "application/x-troff-me"},                    {"mel", "text/x-vmel"},                    {"mi", "application/x-mif"},                    {"mid", "audio/midi"},                    {"midi", "audio/midi"},                    {"m4a", "audio/mp4a-latm"},                    {"m4b", "audio/mp4a-latm"},                    {"m4p", "audio/mp4a-latm"},                    {"m4u", "video/vndmpegurl"},                    {"m4v", "video/x-m4v"},                    {"mov", "video/quicktime"},                    {"mp2", "audio/x-mpeg"},                    {"mp3", "audio/x-mpeg"},                    {"mp4", "video/mp4"},                    {"mpc", "application/vndmpohuncertificate"},                    {"mpe", "video/mpeg"},                    {"mpeg", "video/mpeg"},                    {"mpg", "video/mpeg"},                    {"mpg4", "video/mp4"},                    {"mpga", "audio/mpeg"},                    {"msg", "application/vndms-outlook"},                    {"mif", "application/x-mif"},                    {"mil", "image/x-cals"},                    {"mio", "audio/x-mio"},                    {"mmf", "application/x-skt-lbs"},                    {"mng", "video/x-mng"},                    {"mny", "application/x-msmoney"},                    {"moc", "application/x-mocha"},                    {"mocha", "application/x-mocha"},                    {"mod", "audio/x-mod"},                    {"mof", "application/x-yumekara"},                    {"mol", "chemical/x-mdl-molfile"},                    {"mop", "chemical/x-mopac-input"},                    {"movie", "video/x-sgi-movie"},                    {"mpn", "application/vndmophunapplication"},                    {"mpp", "application/vndms-project"},                    {"mps", "application/x-mapserver"},                    {"mrl", "text/x-mrml"},                    {"mrm", "application/x-mrm"},                    {"ms", "application/x-troff-ms"},                    {"mts", "application/metastream"},                    {"mtx", "application/metastream"},                    {"mtz", "application/metastream"},                    {"mzv", "application/metastream"},                    {"nar", "application/zip"},                    {"nbmp", "image/nbmp"},                    {"nc", "application/x-netcdf"},                    {"ndb", "x-lml/x-ndb"},                    {"ndwn", "application/ndwn"},                    {"nif", "application/x-nif"},                    {"nmz", "application/x-scream"},                    {"nokia-op-logo", "image/vndnok-oplogo-color"},                    {"npx", "application/x-netfpx"},                    {"nsnd", "audio/nsnd"},                    {"nva", "application/x-neva1"},                    {"oda", "application/oda"},                    {"oom", "application/x-atlasMate-plugin"},                    {"ogg", "audio/ogg"},                    {"pac", "audio/x-pac"},                    {"pae", "audio/x-epac"},                    {"pan", "application/x-pan"},                    {"pbm", "image/x-portable-bitmap"},                    {"pcx", "image/x-pcx"},                    {"pda", "image/x-pda"},                    {"pdb", "chemical/x-pdb"},                    {"pdf", "application/pdf"},                    {"pfr", "application/font-tdpfr"},                    {"pgm", "image/x-portable-graymap"},                    {"pict", "image/x-pict"},                    {"pm", "application/x-perl"},                    {"pmd", "application/x-pmd"},                    {"png", "image/png"},                    {"pnm", "image/x-portable-anymap"},                    {"pnz", "image/png"},                    {"pot", "application/vndms-powerpoint"},                    {"ppm", "image/x-portable-pixmap"},                    {"pps", "application/vndms-powerpoint"},                    {"ppt", "application/vndms-powerpoint"},                    {"pqf", "application/x-cprplayer"},                    {"pqi", "application/cprplayer"},                    {"prc", "application/x-prc"},                    {"proxy", "application/x-ns-proxy-autoconfig"},                    {"prop", "text/plain"},                    {"ps", "application/postscript"},                    {"ptlk", "application/listenup"},                    {"pub", "application/x-mspublisher"},                    {"pvx", "video/x-pv-pvx"},                    {"qcp", "audio/vndqcelp"},                    {"qt", "video/quicktime"},                    {"qti", "image/x-quicktime"},                    {"qtif", "image/x-quicktime"},                    {"r3t", "text/vndrn-realtext3d"},                    {"ra", "audio/x-pn-realaudio"},                    {"ram", "audio/x-pn-realaudio"},                    {"ras", "image/x-cmu-raster"},                    {"rdf", "application/rdf+xml"},                    {"rf", "image/vndrn-realflash"},                    {"rgb", "image/x-rgb"},                    {"rlf", "application/x-richlink"},                    {"rm", "audio/x-pn-realaudio"},                    {"rmf", "audio/x-rmf"},                    {"rmm", "audio/x-pn-realaudio"},                    {"rnx", "application/vndrn-realplayer"},                    {"roff", "application/x-troff"},                    {"rp", "image/vndrn-realpix"},                    {"rpm", "audio/x-pn-realaudio-plugin"},                    {"rt", "text/vndrn-realtext"},                    {"rte", "x-lml/x-gps"},                    {"rtf", "application/rtf"},                    {"rtg", "application/metastream"},                    {"rtx", "text/richtext"},                    {"rv", "video/vndrn-realvideo"},                    {"rwc", "application/x-rogerwilco"},                    {"rar", "application/rar"},                    {"rc", "text/plain"},                    {"rmvb", "audio/x-pn-realaudio"},                    {"s3m", "audio/x-mod"},                    {"s3z", "audio/x-mod"},                    {"sca", "application/x-supercard"},                    {"scd", "application/x-msschedule"},                    {"sdf", "application/e-score"},                    {"sea", "application/x-stuffit"},                    {"sgm", "text/x-sgml"},                    {"sgml", "text/x-sgml"},                    {"shar", "application/x-shar"},                    {"shtml", "magnus-internal/parsed-html"},                    {"shw", "application/presentations"},                    {"si6", "image/si6"},                    {"si7", "image/vndstiwapsis"},                    {"si9", "image/vndlgtwapsis"},                    {"sis", "application/vndsymbianinstall"},                    {"sit", "application/x-stuffit"},                    {"skd", "application/x-koan"},                    {"skm", "application/x-koan"},                    {"skp", "application/x-koan"},                    {"skt", "application/x-koan"},                    {"slc", "application/x-salsa"},                    {"smd", "audio/x-smd"},                    {"smi", "application/smil"},                    {"smil", "application/smil"},                    {"smp", "application/studiom"},                    {"smz", "audio/x-smd"},                    {"sh", "application/x-sh"},                    {"snd", "audio/basic"},                    {"spc", "text/x-speech"},                    {"spl", "application/futuresplash"},                    {"spr", "application/x-sprite"},                    {"sprite", "application/x-sprite"},                    {"sdp", "application/sdp"},                    {"spt", "application/x-spt"},                    {"src", "application/x-wais-source"},                    {"stk", "application/hyperstudio"},                    {"stm", "audio/x-mod"},                    {"sv4cpio", "application/x-sv4cpio"},                    {"sv4crc", "application/x-sv4crc"},                    {"svf", "image/vnd"},                    {"svg", "image/svg-xml"},                    {"svh", "image/svh"},                    {"svr", "x-world/x-svr"},                    {"swf", "application/x-shockwave-flash"},                    {"swfl", "application/x-shockwave-flash"},                    {"t", "application/x-troff"},                    {"tad", "application/octet-stream"},                    {"talk", "text/x-speech"},                    {"tar", "application/x-tar"},                    {"taz", "application/x-tar"},                    {"tbp", "application/x-timbuktu"},                    {"tbt", "application/x-timbuktu"},                    {"tcl", "application/x-tcl"},                    {"tex", "application/x-tex"},                    {"texi", "application/x-texinfo"},                    {"texinfo", "application/x-texinfo"},                    {"tgz", "application/x-tar"},                    {"thm", "application/vnderithm"},                    {"tif", "image/tiff"},                    {"tiff", "image/tiff"},                    {"tki", "application/x-tkined"},                    {"tkined", "application/x-tkined"},                    {"toc", "application/toc"},                    {"toy", "image/toy"},                    {"tr", "application/x-troff"},                    {"trk", "x-lml/x-gps"},                    {"trm", "application/x-msterminal"},                    {"tsi", "audio/tsplayer"},                    {"tsp", "application/dsptype"},                    {"tsv", "text/tab-separated-values"},                    {"ttf", "application/octet-stream"},                    {"ttz", "application/t-time"},                    {"txt", "text/plain"},                    {"ult", "audio/x-mod"},                    {"ustar", "application/x-ustar"},                    {"uu", "application/x-uuencode"},                    {"uue", "application/x-uuencode"},                    {"vcd", "application/x-cdlink"},                    {"vcf", "text/x-vcard"},                    {"vdo", "video/vdo"},                    {"vib", "audio/vib"},                    {"viv", "video/vivo"},                    {"vivo", "video/vivo"},                    {"vmd", "application/vocaltec-media-desc"},                    {"vmf", "application/vocaltec-media-file"},                    {"vmi", "application/x-dreamcast-vms-info"},                    {"vms", "application/x-dreamcast-vms"},                    {"vox", "audio/voxware"},                    {"vqe", "audio/x-twinvq-plugin"},                    {"vqf", "audio/x-twinvq"},                    {"vql", "audio/x-twinvq"},                    {"vre", "x-world/x-vream"},                    {"vrml", "x-world/x-vrml"},                    {"vrt", "x-world/x-vrt"},                    {"vrw", "x-world/x-vream"},                    {"vts", "workbook/formulaone"},                    {"wax", "audio/x-ms-wax"},                    {"wbmp", "image/vndwapwbmp"},                    {"web", "application/vndxara"},                    {"wav", "audio/x-wav"},                    {"wma", "audio/x-ms-wma"},                    {"wmv", "audio/x-ms-wmv"},                    {"wi", "image/wavelet"},                    {"wis", "application/x-InstallShield"},                    {"wm", "video/x-ms-wm"},                    {"wmd", "application/x-ms-wmd"},                    {"wmf", "application/x-msmetafile"},                    {"wml", "text/vndwapwml"},                    {"wmlc", "application/vndwapwmlc"},                    {"wmls", "text/vndwapwmlscript"},                    {"wmlsc", "application/vndwapwmlscriptc"},                    {"wmlscript", "text/vndwapwmlscript"},                    {"wmv", "video/x-ms-wmv"},                    {"wmx", "video/x-ms-wmx"},                    {"wmz", "application/x-ms-wmz"},                    {"wpng", "image/x-up-wpng"},                    {"wps", "application/vndms-works"},                    {"wpt", "x-lml/x-gps"},                    {"wri", "application/x-mswrite"},                    {"wrl", "x-world/x-vrml"},                    {"wrz", "x-world/x-vrml"},                    {"ws", "text/vndwapwmlscript"},                    {"wsc", "application/vndwapwmlscriptc"},                    {"wv", "video/wavelet"},                    {"wvx", "video/x-ms-wvx"},                    {"wxl", "application/x-wxl"},                    {"x-gzip", "application/x-gzip"},                    {"xar", "application/vndxara"},                    {"xbm", "image/x-xbitmap"},                    {"xdm", "application/x-xdma"},                    {"xdma", "application/x-xdma"},                    {"xdw", "application/vndfujixeroxdocuworks"},                    {"xht", "application/xhtml+xml"},                    {"xhtm", "application/xhtml+xml"},                    {"xhtml", "application/xhtml+xml"},                    {"xla", "application/vndms-excel"},                    {"xlc", "application/vndms-excel"},                    {"xll", "application/x-excel"},                    {"xlm", "application/vndms-excel"},                    {"xls", "application/vndms-excel"},                    {"xlt", "application/vndms-excel"},                    {"xlw", "application/vndms-excel"},                    {"xm", "audio/x-mod"},                    {"xml", "text/xml"},                    {"xmz", "audio/x-mod"},                    {"xpi", "application/x-xpinstall"},                    {"xpm", "image/x-xpixmap"},                    {"xsit", "text/xml"},                    {"xsl", "text/xml"},                    {"xul", "text/xul"},                    {"xwd", "image/x-xwindowdump"},                    {"xyz", "chemical/x-pdb"},                    {"yz1", "application/x-yz1"},                    {"z", "application/x-compress"},                    {"zac", "application/x-zaurus-zac"},                    {"zip", "application/zip"},                    {"", "*/*"}            };

有一个小的瑕疵,查找到的文件类型,可能不只你需要的,因为不同类型的MIME可能相同,大家需要再筛选一下。

还有一个很重要的问题:刚新建的文件查找不到。

这是因为系统的数据库可能没有刷新。这时你就需要手动刷新数据库。可以调用一下代码:

 MediaScannerConnection.scanFile(context, path, null, null);
path就是要刷新的路径数组啦。具体用法大家自行搜索吧。


有问题的可以在下方留言。看到会第一时间回复的。


0 0
原创粉丝点击