首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

2013年三月23-使用Java I-Ol流快速搜索手机文件引擎

2013-04-02 
2013年3月23----使用Java I-Ol流快速搜索手机文件引擎使用Java I-O流快速搜索手机文件引擎文件搜索功能可

2013年3月23----使用Java I-Ol流快速搜索手机文件引擎

使用Java I-O流快速搜索手机文件引擎

       文件搜索功能可以快速协助我们找到想要的文件,在手机上制作一个文件搜索的功能其实并不困难,Java I/O的API中提供了java.io.File对象,只要利用File对象的方法,再搭配Android的EditText、TextView等对象,就可以轻松做出一个手机的文件搜索引擎。

      下面是程序源码:

package com.example.test01; import java.io.File;import java.util.Iterator; import android.app.Activity;import android.content.Context;import android.content.res.TypedArray;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.Gallery;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast; public class MainActivity extends Activity {        Button button01;       EditText editText01;       TextView textView01;              @Override       protected void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.activity_main);              button01 = (Button)findViewById(R.id.button01);              editText01 = (EditText)findViewById(R.id.editText01);              textView01 = (TextView)findViewById(R.id.textView01);                            button01.setOnClickListener(new OnClickListener() {                                          public void onClick(View v) {                            //取得输入的关键字                            String string = editText01.getText().toString();                            if (string.equals("")) {                                   textView01.setText("请勿输入空白的关键字!");                            }                            else                            {                                          textView01.setText(SearchFile(string));                            }                     }              });       }              //搜索文件的方法       public String SearchFile(String string)       {              String result = "";              File[] file = new File("/").listFiles();              for (File file2 : file) {                     if (file2.getName().indexOf(string) >= 0) {                            result += file2.getPath() + "\n";                     }              }              if (result.equals("")) result = "找不到文件!";              return result;       }              @Override       public boolean onCreateOptionsMenu(Menu menu) {              // Inflate the menu; this adds items to the action bar if it is present.              getMenuInflater().inflate(R.menu.main, menu);              return true;       } }


运行效果如图:

        不好意思,忘了截图了.......

扩展学习:

       在本范例中,searchFile(String)方法的功能仅为搜索根目录下符合关键字的文件,并没有进一步再对子目录下的文件进行搜索。如果想实现这个功能,我们可以利用File.isDirectory()这个方法来判断其是否为目录,如果是则继续向下搜索,否则终止向下搜索。所以我们需要运用递归的思想,下面是对searchFile()方法的改进,考虑到手机能否负荷大规模的文件搜索,我们将起始搜索位置定在sdcard中:

       

 //搜索文件的方法,参数分别为关键字,搜索目录,搜索结果       public String SearchFile(String keywords , String filePath , String result)       {              String temp = "";              File[] file;              if (filePath == null) {                     file = new File("/sdcard").listFiles();              }              else              {                     file = new File(filePath).listFiles();                                   }              for (File file2 : file) {                     if (file2.isDirectory()) {                            //不搜索系统文件夹                            if (!file2.getName().contains(".")) {                                   temp += SearchFile(keywords, file2.getAbsolutePath(), result);                            }                     }                     else                     {                            if (file2.getName().contains(keywords)) {                                   temp += file2.getPath() + "\n";                            }                     }              }              if (temp.equals("")) temp = "";              return temp;       } 

 

热点排行