Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android文件搜索_Java_Android_File_Search - Fatal编程技术网

Java Android文件搜索

Java Android文件搜索,java,android,file,search,Java,Android,File,Search,我正在创建一个在设备上搜索特定文件的应用程序。 我正在使用以下代码。 但当我运行此应用程序时,它会出现nullpointer异常。 我已经修改了代码。。新的代码如下 public class Display extends ListActivity { List<String> fileslist; static String searchtext; @Override protected void onListItemClick(ListView l, View v, in

我正在创建一个在设备上搜索特定文件的应用程序。
我正在使用以下代码。
但当我运行此应用程序时,它会出现nullpointer异常。
我已经修改了代码。。新的代码如下

public class Display extends ListActivity {



 List<String> fileslist;
static String searchtext;
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    Bundle bd= getIntent().getExtras();
    searchtext= bd.getString("1");
    fileslist= new ArrayList<String>();
    new Display().listallfiles("/");    
    if(fileslist.isEmpty()){
    Toast.makeText(this, "YO OY", 2200).show(); 
    }
    else{
    ArrayAdapter<String> displaylist = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,fileslist);
    setListAdapter(displaylist);
    }



}

void listallfiles(String path){
    try{


    String  files;
     File  folder = new File (path);
     File [] listOfFiles = folder.listFiles(); 

     for (int i = 0; i < listOfFiles.length; i++) 
     {
         if(listOfFiles[i].canRead()){
      if (listOfFiles[i].isFile()) 
      {
      files = listOfFiles[i].getName();
        if(listOfFiles[i].getName().contains(searchtext))
      fileslist.add(listOfFiles[i].getName());  


        }

     if(listOfFiles[i].isDirectory()) {

        listallfiles(path+"\\"+listOfFiles[i].getName().toString()+"\\");   
    }

     }
     }
    }
    catch (Exception e) 

    {
    e.printStackTrace();    

    }



    }
公共类显示扩展了ListActivity{
列表文件列表;
静态字符串搜索文本;
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
//TODO自动生成的方法存根
super.onListItemClick(左、右、位置、id);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
Bundle bd=getIntent().getExtras();
searchtext=bd.getString(“1”);
fileslist=newarraylist();
新建Display().listallfiles(“/”);
if(fileslist.isEmpty()){
Toast.makeText(这个“yooy”,2200.show();
}
否则{
ArrayAdapter displaylist=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,filelist);
setListAdapter(显示列表);
}
}
无效列表所有文件(字符串路径){
试一试{
字符串文件;
文件夹=新文件(路径);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
}

堆栈跟踪
12-13 19:35:27.072:W/System.err(513):java.lang.NullPointerException 12-13 19:35:27.082:W/System.err(513):位于com.mypack.filesearch.Display.listallfiles(Display.java:56) 12-13 19:35:27.082:W/System.err(513):位于com.mypack.filesearch.Display.listallfiles(Display.java:70) 12-13 19:35:27.082:W/System.err(513):位于com.mypack.filesearch.Display.onCreate(Display.java:35) 12-13 19:35:27.082:W/System.err(513):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 12-13 19:35:27.082:W/System.err(513):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

这段代码运行得很好。。如果你想测试你自己的情况。
包com.mypack

import java.util.*;
import java.io.*;

public class Main 


 {
List<String> listof;

public static void main(String [] args) 
{

 // Directory path here
  String  path = "d:\\Java\\Programs"; 
  new Main().listallfiles(path);


  }





    void listallfiles(String path){
    try{

listof= new ArrayList<String>();

    String  files;
     File  folder = new File (path);
     File [] listOfFiles = folder.listFiles(); 

     for (int i = 0; i < listOfFiles.length; i++) 
     {

      if (listOfFiles[i].isFile()) 
      {
      files = listOfFiles[i].getName();
   if(listOfFiles[i].getName().contains(".class"))
    listof.add(files);


        }

          else if(listOfFiles[i].isDirectory()) {

        listallfiles(path+"\\"+listOfFiles[i].getName().toString()+"\\");   
    }

     }
    }
    catch (Exception e) 

    {
    e.printStackTrace();    

    }


  for(int i=0;i<listof.size();i++)
  System.out.println(listof.get(i).toString());




    }

    }
import java.util.*;
导入java.io.*;
公共班机
{
名单;
公共静态void main(字符串[]args)
{
//此处的目录路径
String path=“d:\\Java\\Programs”;
新建Main().listallfiles(路径);
}
无效列表所有文件(字符串路径){
试一试{
listof=newarraylist();
字符串文件;
文件夹=新文件(路径);
File[]listOfFiles=folder.listFiles();
for(int i=0;i对于(int i=0;i您从不调用SetFileListFileList没有初始化我想我已经包含了用于初始化的getter和setter..或者我如何初始化它?它是一个对象(一个列表或任何东西)。您应该在使用它们之前创建对象。通常,new是关键字,在这里。在您的情况下,filelist=new ArrayList()这将是一个很好的开始。好的,我摆脱了nullpointer异常,但仍然出现stackoverflow错误。12-13 19:14:05.771:E/AndroidRuntime(375):致命异常:main 12-13 19:14:05.771:E/AndroidRuntime(375):java.lang.StackOverflower错误12-13 19:14:05.771:E/AndroidRuntime(375):在com.mypack.filesearch.Display.GetFileList(Display.java:85)12-13 19:14:05.771:E/AndroidRuntime(375):在com.mypack.filesearch.Display.getFileslist(Display.java:85)12-13 19:14:05.771:E/AndroidRuntime(375):在com.mypack.filesearch.Display.getFileslist(Display.java:85)。。