为了索引我的推文集,我已经编写了这段代码,但是出现了一个错误我不知道我应该初始化一些东西,谢谢。
public static void main (String args []) throws IOException{
String line;
Gson gson = new GsonBuilder().create();
File f = new File(Constante.DATA);
BufferedReader reader;
Indexer indexer = new Indexer(Constante.INDEX);
int nbrtweet =0, i=0;
for(File file : f.listFiles())
{
System.out.println(file.getName());
reader = new BufferedReader( new FileReader(file));
while((line = reader.readLine())!=null){
Tweet tweet;
try{
tweet = gson.fromJson(line, Tweet.class);
}catch( JsonSyntaxException e){
i++;
continue;
}
nbrtweet++;
indexer.indexTweet(tweet);
}
错误显示在此行:
for(File file : f.listFiles())
并打印
Exception in thread "main" java.lang.NullPointerException
at ApprocheTwitter.src.Indexer.IndexationThematiqueTwits.main(IndexationThematiqueTwits.java:26)
答案 0 :(得分:0)
您将错误追溯到以下行:
for(File file : f.listFiles())
问题在于,由于您使用的是过时的File
API,因此错误原因可能是以下之一:
f
不是目录; f
是一个目录,但您无法从中读取条目。更重要的是,你为每个文件创建一个阅读器,但之后不要关闭它,这是一个错误;而且,您甚至没有指定编码。
现在,这个问题的解决方案取决于您使用的是Java 7还是Java 8.在Java 8中,它非常简单:使用Files.list()
并使用每个文件内容;使用Java 7,使用Files.newDirectoryStream()
。
无论如何,早在2011年,File
已经死了;改用JSR 203。