Java 正则表达式擦除文件

Java 正则表达式擦除文件,java,regex,Java,Regex,我用Java编写了一个方法来删除文件每行末尾的插入符号。方法如下: //Creates a new file, and deletes the temp file public void createFinalFile() throws FileNotFoundException, IOException{ // read file data into a String String data1 = new Scanner(new File(fileDirectoryStri

我用Java编写了一个方法来删除文件每行末尾的插入符号。方法如下:

//Creates a new file, and deletes the temp file
  public void createFinalFile() throws FileNotFoundException, IOException{
    // read file data into a String
    String data1 = new Scanner(new File(fileDirectoryString + "tempFile.txt")).useDelimiter("\\Z").next();
    // replace all ^ from end of line using (?m) - MULTILINE switch
    data1 = data1.replaceAll("(?m)\\^$", "");
    PrintWriter docketFile3 = new PrintWriter(new FileWriter(fileDirectoryString + "Forclosure-Docket-"+startingYear+startingMonth+startingDay+"-"+endingYear+endingMonth+endingDay+".txt", true));
    docketFile3.write(data1);
  }
问题是,有时临时文件将包含所有信息,但在运行该方法后,新创建的文件为空,我不知道为什么。临时文件的一个示例是:

04/02/2014^BR-12-005193^09/12/2012^P1^SF^DEPOSIT AMOUNT PAID CUYAHOGA COUNTY SHERIFF^
04/02/2014^BR-12-005193^09/12/2012^P1^CS^COST PAYMENT  $860.90 CUYAHOGA COUNTY SHERIFF^

虽然它应该只删除每一行末尾的插入符号,但它似乎在删除每一行。

您的正则表达式并不是这样做的。虽然这个函数总的来说比其他任何东西都更让我想起它,但它应该可以工作。但有一件事可能会出错,那就是您没有关闭输出文件。添加
docketFile3.close()作为一行。

太棒了,似乎已经解决了这个问题。有趣的是,它有时会起作用。