文件搜索引擎FileSearch

作者: 梁晓禄

        文件搜索功能在操作系统或网页中会经常遇到,他可以快速帮用户找到想要的文件或资料。同样在手机中也能实现文件搜索功能。在android中可以通过Java I/O API中的java.io.File对象,利用File对象方法,再搭配android的EditText、TextView等对象,就可以轻松做出一个手机文件搜索引擎。

下面以一个实例来详细讲解。


编写布局文件main.xml,分别添加两个TextView控件,1个EditText控件和1个Button控件,实现整体布局,具体代码如下。


<?xml version="1.0" encoding="utf-8"?>
  <AbsoluteLayout
    android:id="@+id/layout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/white"
    xmlns:android="http://schemas.android.com/apk/res/android"
  >
    <EditText
      android:id="@+id/mKeyword"
      android:layout_width="198px"
      android:layout_height="wrap_content"
      android:textSize="18sp"
      android:layout_x="110px"
      android:layout_y="12px"
    >
    </EditText>
    <TextView
      android:id="@+id/mText"
      android:layout_width="wrap_content"
      android:layout_height="31px"
      android:textSize="18sp"
      android:layout_x="7px"
      android:layout_y="25px"
      android:text="@string/str_title"
      android:textColor="@drawable/black"
    >
    </TextView>
    <Button
      android:id="@+id/mButton"
      android:layout_width="86px"
      android:layout_height="48px"
      android:text="@string/str_button"
      android:layout_x="100px"
      android:layout_y="72px"
    >
    </Button>
    <TextView
      android:id="@+id/mResult"
      android:layout_width="296px"
      android:layout_height="283px"
      android:layout_x="10px"
      android:layout_y="132px"
      android:textColor="@drawable/blue"
    >
    </TextView>
  </AbsoluteLayout>


在strings.xml添加程序中要使用的字符串。


<?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string name="hello">HI</string>
    <string name="app_name">搜索</string>
    <string name="str_button">请搜索</string>
    <string name="str_title">关键字:</string>
  </resources>


编写sousuo.java,实现搜索功能。

1声明对象变量。

2载入main.xmlLayout.

3初始化对象,并为mButton按钮设置响应单击事件onClickListener。

4取得输入的关键字。

5根据搜索文件的方法和关键字搜索。


package irdc.sousuo;

import irdc.sousuo.R;

import java.io.File;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class sousuo extends Activity
{
  /*声明对象变量*/
  private Button mButton;
  private EditText mKeyword;
  private TextView mResult;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    /* 载入main.xml Layout */
    setContentView(R.layout.main);
    
    /* 初始化对象 */
    mKeyword=(EditText)findViewById(R.id.mKeyword);
    mButton=(Button)findViewById(R.id.mButton);
    mResult=(TextView) findViewById(R.id.mResult);
    
    /* 将mButton添加onClickListener */
    mButton.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View v)
      {
      /*取得输入的关键字*/
        String keyword = mKeyword.getText().toString();
        if(keyword.equals(""))
        {
          mResult.setText("请勿输入空白的关键字!!");
        }
        else
        {
          mResult.setText(searchFile(keyword));
        }
      }
    });
  }
  
  /* 搜索文件的method */
  private String searchFile(String keyword)
  {
    String result="";
    File[] files=new File("/").listFiles();
    for( File f : files )
    {
      if(f.getName().indexOf(keyword)>=0)
      {
        result+=f.getPath()+"\n";
      }
    }
    if(result.equals("")) result="找不到文件!!";
    return result;
  }
}


searchFile(String keyword)方法为了搜索根目录下符合关键字的文件,在搜索文件的过程中,只搜索根目录中的文件,并没有再对子目录下的文件作进一步比较,如果要再强化这个文件搜索功能,让他也能搜索包含子目录下的所有文件,可以在程序中利用File.isDirectory()这个方法来判断其是否为目录。如果是的话,就继续往下一层寻找;不是的话,就终止向下寻找的动作。

运行结果如下:


        


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值