大家都应该用过操作系统中的文件搜索功能吧!它可以快速协助我们找到想要的文件。如果要在手机制作一个文件搜索的功能,又该如何实现呢?其实这个功能并不困难,Java I/OAPI中提供了java.io.File对象,只要利用File对象的方法,再搭配AndroidEditTextTextView等对象,就可以轻松做出一个手机的文件搜索引擎。

本范例中使用EditTextButtonTextView三种对象来实现此功能,用户将要搜索的文件名称或关键字输入EditText中,单击Button后,程序会在根目录中寻找符合的文件,并将搜索结果显示于TextView中;如果找不到符合的文件,则显示“找不到文件”。

范例程序

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)

{

/*取得输入的关键字*/

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;

}

}

扩展学习

在本范例中,searchFileString keyword)这个方法的功能为搜索根目录下符合关键字的文件。在搜索文件的过程中,只搜索根目录中的文件,并没有进一步再对子目录下的文件比对,如果要再强化这个文件搜索的功能,让它也能搜索包含子目录下的所有文件,可以在程序中利用File.isDirectory()这个方法来判断其是否为目录。如果是的话,就继续往下一层寻找;不是的话,就终止向下寻找的动作。这个做法在后面的范例中会有详细的示范,要注意的是手机硬件环境是否能负荷程序做大规模的文件搜索,毕竟手机的硬件配备(处理器、内存)是比不上一般计算机的。

另外,在范例中仅针对关键字做了空白检查,在比较文件名称时也没有忽略大小写(要大小写完全符合才搜索的出来),如果要让这个搜索功能更完备,当然可以多做一点变化。例如,检查关键字是否包含特殊的字符、可选择比较文件时是否忽略大小写、可选择要搜索的文件类型,甚至是可自己指定要搜索的目录等,就看各位要如何运用了。

更多相关文章

  1. 第一次尝试翻译本书
  2. Android/Java 压缩/解压/加密文件/zip
  3. Android原生和React Native 混合旧项目的开发环境搭建及打包
  4. (续)Android热更新:Tinker热修复与Walle多渠道打包
  5. android程序---->android多线程下载(一)
  6. 2011.8.17---2011.8.18 续(android的classloader)
  7. 彻底弄明白Gradle相关配置
  8. Android(安卓)studio代码混淆
  9. Android热修复原理总结

随机推荐

  1. 64位WIN7下Android(安卓)开发环境搭建(SDK
  2. 【Android代码片段之六】Toast工具类(实现
  3. 聚焦 Android 11: Google Play 应用分发
  4. Accessibility辅助功能--一念天堂,一念地
  5. Android 内存限制
  6. Android之View的诞生之谜
  7. GreenDao 3.0 简介、使用及踩坑
  8. Android init.rc
  9. Unknown host ‘XXXX: nodename nor serv
  10. 深入浅出 - Android系统移植与平台开发(五