文件搜索引擎FileSearch
16lz
2021-01-25
作者: 梁晓禄
文件搜索功能在操作系统或网页中会经常遇到,他可以快速帮用户找到想要的文件或资料。同样在手机中也能实现文件搜索功能。在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()这个方法来判断其是否为目录。如果是的话,就继续往下一层寻找;不是的话,就终止向下寻找的动作。
运行结果如下:
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- androidの获取天气预报JSON 实现
- Android(安卓)Studio 的四种打包方式
- Android(安卓)Studio目录结构详细解答
- Android(安卓)SharedPreferences 首次运行引导界面
- Android(安卓)ImageView 不显示JPEG图片 及 Android(安卓)Studio