`
bcyy
  • 浏览: 1809884 次
文章分类
社区版块
存档分类
最新评论

使用Java I/O流快速搜索手机文件引擎

 
阅读更多

使用Java I/O流快速搜索手机文件引擎

文件搜索功能可以快速协助我们找到想要的文件,在手机上制作一个文件搜索的功能其实并不困难,Java I/O的API中提供了java.io.File对象,只要利用File对象的方法,再搭配Android的EditText、TextView等对象,就可以轻松做出一个手机的文件搜索引擎。

下面是程序源码:

package com.example.test01;
 
import java.io.File;
import java.util.Iterator;
 
import android.app.Activity;
importandroid.content.Context;
importandroid.content.res.TypedArray;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
importandroid.view.ViewGroup;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.AdapterView;
importandroid.widget.BaseAdapter;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Gallery;
importandroid.widget.ImageView;
importandroid.widget.TextView;
import android.widget.Toast;
 
public class MainActivityextends Activity {
 
       Button button01;
       EditText editText01;
       TextView textView01;
      
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              button01 = (Button)findViewById(R.id.button01);
              editText01 = (EditText)findViewById(R.id.editText01);
              textView01 = (TextView)findViewById(R.id.textView01);
             
              button01.setOnClickListener(new OnClickListener() {
                    
                     public void onClick(View v) {
                            //取得输入的关键字
                            String string =editText01.getText().toString();
                            if (string.equals("")) {
                                   textView01.setText("请勿输入空白的关键字!");
                            }
                            else
                            {
                                          textView01.setText(SearchFile(string));
                            }
                     }
              });
       }
      
       //搜索文件的方法
       public String SearchFile(String string)
       {
              String result = "";
              File[] file = new File("/").listFiles();
              for (File file2 : file) {
                     if (file2.getName().indexOf(string) >= 0) {
                            result += file2.getPath() +"\n";
                     }
              }
              if (result.equals("")) result = "找不到文件!";
              return result;
       }
      
       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
              // Inflate the menu; this adds items to the action barif it is present.
              getMenuInflater().inflate(R.menu.main, menu);
              return true;
       }
 
}

运行效果如图:

扩展学习:

在本范例中,searchFile(String)方法的功能仅为搜索根目录下符合关键字的文件,并没有进一步再对子目录下的文件进行搜索。如果想实现这个功能,我们可以利用File.isDirectory()这个方法来判断其是否为目录,如果是则继续向下搜索,否则终止向下搜索。所以我们需要运用递归的思想,下面是对searchFile()方法的改进,考虑到手机能否负荷大规模的文件搜索,我们将起始搜索位置定在sdcard中:

//搜索文件的方法,参数分别为关键字,搜索目录,搜索结果
       public String SearchFile(String keywords , String filePath ,String result)
       {
              String temp = "";
              File[] file;
              if (filePath == null) {
                     file = newFile("/sdcard").listFiles();
              }
              else
              {
                     file = new File(filePath).listFiles();
                    
              }
              for (File file2 : file) {
                     if (file2.isDirectory()) {
                            //不搜索系统文件夹
                            if(!file2.getName().contains(".")) {
                                   temp += SearchFile(keywords,file2.getAbsolutePath(), result);
                            }
                     }
                     else
                     {
                            if (file2.getName().contains(keywords)) {
                                   temp += file2.getPath() +"\n";
                            }
                     }
              }
              if (temp.equals("")) temp = "";
              return temp;
       }

运行效果图:


分享到:
评论

相关推荐

    android 快速的搜索手机文件引擎 java I/O的应用

    android 快速的搜索手机文件引擎 java I/O的应用

    本地文件搜索引擎(类XP搜索引擎)

    本地文件搜索引擎,搜索本机文件,相对于XP系统的本地搜索引擎。 包含的技术有GUI设计设计,侦听,I/O操作,字符匹配等基本的知识,当把这些知识联系到一起的时候,可以设计出这样非常好的程序

    Java2游戏编程.pdf

    本书将向读者展示用Java语言和它的类库创建2D游戏,所涉及的主题包括高速性能、双缓冲图像、动画、声音、媒体控制、I/O和网络支持等。将带领大家一步一步学习编写Java游戏,最终打造属于自己的Java游戏。 目录...

    Java核心技术II(第8版)

    1.7 新I/O 1.7.1 内存映射文件 1.7.2 缓冲区数据结构 1.7.3 文件加锁机制 1.8 正则表达式 第十二章 XML 2.1 XML概述 2.1.1 XML文档的结构 2.2 解析XML文档 2.3 验证XML文档 2.3.1 文档类型定义 2.3.2 XML Schema ...

    异步并行加载工具Asyncload.zip

    nas上文件 (共享文件存储)output/xxx (磁盘文件)memcache client / cat client (cache服务)database (oracle , mysql) (数据库)dubbo client (外部服务)search client (搜索引擎)思路正因为考虑到I/O阻塞,...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Thymeleaf官方文档翻译

    Thymeleaf官方文档翻译文档。 Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于...依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。

    thymeleaf _3.0.5_中文 参考手册

    Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于转换模板文件,以显示您的应用...依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。

    thymeleaf 3.0.5中文参考手册

    Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于转换模板文件,以显示您的应用... 依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。

    thymeleaf_3.0.5_中文手册.pdf

    Thymeleaf是一个Java库。它是一个XML / XHTML / HTML5模板引擎,能够应用于转换模板文件,以显示您的应用...依靠智能缓存去解析文件,致使其执行期间的I / O操作达到了最少数量,因此其处理的模板的能力实非常快速的。

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google Android SDK开发范例大全的目录

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google+Android+SDK开发范例大全

    4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与...

    Google Android sdk 开发范例大全 部分章节代码

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

    Google Android SDK 开发范例大全01

    4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与...

Global site tag (gtag.js) - Google Analytics