使用Bufferedreader和Writer删除文本文件中的空行;但是我总是将最后一行留空

时间:2014-05-09 17:06:25

标签: java text bufferedreader bufferedwriter

我有一个BufferedReaderBufferedRriter,可以从文本文件中读取和删除空白行。这一切都很好,除了我不能为我的生活找到一个很好的解决方案来结束它。

 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"

1 个答案:

答案 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);
}