|
文件搜索引擎 FileSearch
SDCard 中文件搜索与 File 类
①创建新工程
②在 string.xml 添加程序中要使用的字符串
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">myFileTest</string>
<string name="showInput">输入关键字</string>
<string name="toSearch">搜索</string>
<string name="info">系统SDCard目录文件路径:\n</string>
<string name="pleaseInput">请输入关键字!!</string>
<string name="notFond">没有找到相关文件!!</string>
<string name="pathError">读取路径出错!!</string>
</resources>
复制代码
③修改 main.xml 布局,添加两个 TextView、一个 EditText、一个 Button
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
android:id="@+id/Button_Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="253px"
android:layout_y="5px"
android:text="@string/toSearch">
</Button>
<EditText
android:id="@+id/input_KEY_EditText"
android:layout_width="112px"
android:layout_height="52px"
android:textSize="18sp"
android:layout_x="119px"
android:layout_y="4px"
>
</EditText>
<TextView
android:id="@+id/TextView_showIn"
android:layout_width="103px"
android:layout_height="29px"
android:textSize="20sp"
android:layout_x="5px"
android:layout_y="16px"
android:text="@string/showInput">
</TextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="370px"
android:layout_x="0px"
android:layout_y="60px"
android:id="@+id/TextView_Result">
</TextView>
</AbsoluteLayout>
复制代码
④修改 mainActivity.java 文件,添加搜索功能
package zyf.myFileTest;
/*导入程序使用的包*/
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;
import android.widget.Toast;
public class myFileTest extends Activity implements Button.OnClickListener {
/** Called when the activity is first created. */
/*定义程序要使用的类对象*/
private File file;
private String path;
private String info;
private String theKey_formInput;
private TextView show_Result;
private EditText input_SearchKey_Edit;
private Button toSearch_Button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*设置主屏布局为main.xml*/
setContentView(R.layout.main);
/*通过findViewById()获取XML中的UI对象*/
show_Result = (TextView) findViewById(R.id.TextView_Result);
input_SearchKey_Edit = (EditText) findViewById(R.id.input_KEY_EditText);
toSearch_Button = (Button) findViewById(R.id.Button_Search);
/*为搜索按钮添加点击事件监听器*/
toSearch_Button.setOnClickListener(this);
/*初始化一个Field 对象,指定路径为/sdcard*/
file = new File("/sdcard");
/*从xml中获取字符串*/
info = getString(R.string.info);
}
/*按钮点击事件处理*/
public void onClick(View v) {
// TODO Auto-generated method stub
/*清空*/
path = "";
show_Result.setText("");
/*取得输入框中的要查询的Key*/
theKey_formInput = input_SearchKey_Edit.getText().toString();
/*浏览文件*/
BrowserFile(file);
}
/*浏览文件方法*/
public void BrowserFile(File file) {
if (theKey_formInput.equals("")) {
/*如果输入框没有输入点击搜索按钮,提示输入*/
Toast.makeText(this, getString(R.string.pleaseInput),
Toast.LENGTH_SHORT).show();
} else {
/*开始搜索文件*/
ToSearchFiles(file);
/*搜索完毕后,如果搜到结果为空,提示没有找到*/
if (show_Result.getText().equals("")) {
Toast.makeText(this, getString(R.string.notFond),
Toast.LENGTH_SHORT).show();
}
}
}
/*开始搜索文件方法*/
public void ToSearchFiles(File file) {
/*定义一个File文件数组,用来存放/sdcard目录下的文件或文件夹*/
File[] the_Files = file.listFiles();
/*通过遍历所有文件和文件夹*/
for (File tempF : the_Files) {
if (tempF.isDirectory()) {
ToSearchFiles(tempF);
/*如果是文件夹的话继续遍历搜索*/
} else {
try {
/*是文件,进行比较,如果文件名称中包含输入搜索Key,则返回大于-1的值*/
if (tempF.getName().indexOf(theKey_formInput) > -1) {
/*获取符合条件文件的路径,进行累加*/
path += "\n" + tempF.getPath();
/*显示结果的TextView显示信息和搜索到的路径*/
show_Result.setText(info + path);
}
} catch (Exception e) {
// TODO: handle exception
/*如果路径找不到,提示出错*/
Toast.makeText(this, getString(R.string.pathError),
Toast.LENGTH_SHORT).show();
}
}
}
}
}
复制代码
结果:
|
|