获取文件的第一列并将其保存到文件中

时间:2015-06-29 13:24:58

标签: java file

我想使用分隔符“,”提取文件中的第一列,并将其保存到新文件中。 输出会生成此异常:

Exception in thread "main" java.lang.NullPointerException
    at Extract.main(Extract.java:26)

以下是我使用的代码,但我不确定它是否正确:

public class Extract {
    public Extract(){
    }
     public static void main(String[] args) {
        BufferedReader in = null;
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("/home/omar/Téléchargements/nursery.tmp"));
            in = new BufferedReader(new FileReader("pima.txt"));
            String read = null;
            while ((read = in.readLine()) != null) {
                read = in.readLine();
                String[] splited = read.split(",");
                if (splited.length > 0)
                {
                    out.append(splited[0].toString());
                    out.newLine();
                }
            }
        } catch (IOException e) {
            System.out.println("There was a problem: " + e);
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (Exception e) {
            }
        }
        File f = new File("prima.txt");
        f.delete();
        File f2 = new File("pima.tmp");
        f2.renameTo(new File("pima.txt"));
    }
}

1 个答案:

答案 0 :(得分:5)

read = in.readLine();循环内删除第一行,即while()。 问题是你在检查while条件时正在读取行,而在循环中你正在再次读取一行(但这次是一个新行,因为readLine不仅读取一行而且还将读取指针移动到下一行)所以你得到了下一行。

一旦超过文件的末尾,您将获得null而不是一行,这就是您获得异常的原因。