4.11 快速地搜索手机文件引擎Java I/O的应用
范例说明
大家都应该用过操作系统中的文件搜索功能吧!它可以快速协助我们找到想要的文件。如果要在手机制作一个文件搜索的功能,又该如何实现呢?其实这个功能并不困难,Java I/O的API中提供了java.io.File对象,只要利用File对象的方法,再搭配Android的EditText、TextView等对象,就可以轻松做出一个手机的文件搜索引擎。
本范例中使用EditText、Button与TextView三种对象来实现此功能,用户将要搜索的文件名称或关键字输入EditText中,单击Button后,程序会在根目录中寻找符合的文件,并将搜索结果显示于TextView中;如果找不到符合的文件,则显示"找不到文件"。
运行结果(见图4-11)
图4-11 快速搜索手机根目录中的文件范例程序src/irdc.ex04_11/EX04_11.java
范例中以java.io.File对象来取得根目录下的文件,经过比较后,将符合结果的文件路径写入TextView中,若要在TextView中换行,需使用\n来作换行符号。
/* import程序略 */
public class EX04_11 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)
{
/*取得输入的关键字*/
Stringkeyword=mKeyword.getText().toString();
if(keyword.equals(""))
{
mResult.setText("请勿输入空白的关键字!!");
}
else
{
mResult.setText(searchFile(keyword));
}
}
});
}
/* 搜索文件的method */
private String searchFile(String keyword)
{
Stringresult="";
File[]files=newFile("/").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()这个方法来判断其是否为目录。如果是的话,就继续往下一层寻找;不是的话,就终止向下寻找的动作。这个做法在后面的范例中会有详细的示范,要注意的是手机硬件环境是否能负荷程序做大规模的文件搜索,毕竟手机的硬件配备(处理器、内存)是比不上一般计算机的。
另外,在范例中仅针对关键字做了空白检查,在比较文件名称时也没有忽略大小写(要大小写完全符合才搜索的出来),如果要让这个搜索功能更完备,当然可以多做一点变化。例如,检查关键字是否包含特殊的字符、可选择比较文件时是否忽略大小写、可选择要搜索的文件类型,甚至是可自己指定要搜索的目录等,就看各位要如何运用了。
【责任编辑:云霞 TEL:(010)68476606】
点赞 0