索引推文时出错

时间:2017-06-21 18:49:03

标签: java json

为了索引我的推文集,我已经编写了这段代码,但是出现了一个错误我不知道我应该初始化一些东西,谢谢。

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)

1 个答案:

答案 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。