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)。。