デバイス上の特定のファイルを検索するアプリを作成しています。
次のコードを使用しています。
しかし、このアプリケーションを実行すると、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();
}
}
}
スタック トレース
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());
}
}