我想使用分隔符","提取文件中的第一列,并将其保存到新文件中.输出生成此异常:
Exception in thread "main" java.lang.NullPointerException
at Extract.main(Extract.java:26)
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码,但我不确定它是否正确:
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"));
}
}
Run Code Online (Sandbox Code Playgroud)
删除第一行,即read = in.readLine();从while()循环内部删除 .问题是你在检查while条件时正在读取行,而在循环中你正在再次读取一行(但这次是一个新行,因为readLine不仅读取一行而且还将读取指针移动到下一行)所以你得到了下一行.
一旦你越过文件的末尾null而不是一行,这就是你得到Exception的原因.