如何使用正则表达式解析文本文件并将结果写入Java中的另一个文件

时间:2018-10-27 19:36:54

标签: java file-io

我使用正则表达式解析文本文件,以按如下所示使用结果组1和2:

  • 将第二组写入另一个文件
  • 将其命名为第一组

很遗憾,文件上没有数据! 我不知道问题出在哪里,这是我的代码:

EffectiveTimestamp,FromCurrency,TargetCurrency,CurrencyRateType,CurrencyRate
2018-10-26,USD,INR,CURRENT,73.865

这里有人可以帮助我解决此问题并加以识别吗?

1 个答案:

答案 0 :(得分:1)

您正在使用BufferedWriter,并且从不刷新(刷新写入器将内容推送到磁盘上)您的写入器,甚至在程序结束时也将其关闭。

由于这种情况,在将内容从BufferedWriter写入磁盘上的实际文件之前,程序将退出并且内容丢失。

为避免这种情况,您可以在将内容写入bw1之后立即调用flush

bw1.write(c);
bw1.newLine();
bw1.flush();

OR

在程序结束之前,您应该调用

bw1.close(); // this ensures all content in buffered writer gets push to disk before jvm exists

建议不要在每次写入数据时都调用flush,因为这样做会破坏缓冲写入的目的。

所以最好是关闭缓冲的writer对象。您可以通过两种方式做到这一点,

  1. 尝试资源
  2. 最后手动关闭缓冲的writer对象(可能在finally块中),以确保调用它。

除此之外,您还需要确保正则表达式与条件匹配,

if(i==0){

被执行,否则将不会在文件中写入数据的代码,当然在这种情况下,不会在文件中进行写入。

此外,强烈建议关闭您打开的任何资源,例如文件资源,数据库(连接,语句,结果集)资源等。

希望有帮助。