我有一个BufferedReader
和BufferedRriter
,可以从文本文件中读取和删除空白行。这一切都很好,除了我不能为我的生活找到一个很好的解决方案来结束它。
public static void cleanUpData(){
File inputFile = new File("C:\\Users\\student\\workspace\\EmployeePunch\\src\\EmployeeData.txt"); // Your file
File tempFile = new File("C:\\Users\\student\\workspace\\EmployeePunch\\src\\EmployeeDataNew.txt");// temp file
BufferedReader reader = null;
BufferedWriter writer = null;
try{
reader = new BufferedReader(new FileReader(inputFile));
writer = new BufferedWriter(new FileWriter(tempFile,true));
String currentLine;
while((currentLine = reader.readLine()) != null) {
if(currentLine.equals("")) continue;
writer.append(currentLine+"\n");
}
}
catch (IOException e) {
e.printStackTrace();
}finally{
try {
reader.close();
inputFile.delete();
writer.close();
boolean successful = tempFile.renameTo(inputFile);
System.out.println(successful);
validateEmployee();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
我知道它正在做的原因是writer.append(currentLine+"\n");
,但是在最后一行停止的另一种解决方案是什么?
有没有办法知道我在最后一行之前的时间,以避免使用+"\n"
?
答案 0 :(得分:2)
不要在每个输出行后添加换行符。而是在第一行之后的每一行之前插入一个newLine 。
例如,您可以使用以下代码替换while
循环:
boolean needsNewLine = false;
while((currentLine = reader.readLine()) != null) {
if(currentLine.equals("")) continue;
if (!needsNewLine) {
needsNewLine = true;
} else {
writer.append('\n');
}
writer.append(currentLine);
}