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;

       }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值