我正在学习Java。我有一些代码在哪里 我试图在目录上调用文件名,并使其模型在主
上显示表import java.io.File;
import java.util.StringTokenizer;
import javax.swing.table.*;
public class SheetList { directory
public static DefaultTableModel load(){
File file = new File("sheet.");
File list[] = file.listFiles(); //load file list
String col[] = new String[2];
String colNames[] = {"Title", "Artist"};
DefaultTableModel model = new DefaultTableModel(colNames, 0);
for(int cnt = 0; cnt < list.length; cnt++){ // ERROR
String name = list[cnt].getName();
if(list[cnt].isFile()){
StringTokenizer stok = new StringTokenizer(name, " - ");
String token = stok.nextToken();
col[0] = token;
token = stok.nextToken();
col[1] = token;
model.addRow(col);
}
}
return model;
}
}
但标记线上出现问题
Thread [main] (Suspended (exception NullPointerException))
SheetList.load() line: 12
Main.main(String[]) line: 14
答案 0 :(得分:1)
listFiles()可能会返回null并且您无法防范它。如果对象为null,则访问length属性将导致NPE。
在你的循环之前检查文件数组是否为空,你就可以了。
参考:http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()
要记住的另一件事是,您应该检查您创建的文件是否存在以及它是否是目录。
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#exists()
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()