2010-12-13 170 views
0

我的工作区中有一些java文件。现在我想编写一个java程序,它将逐行读取来自不同源的文本文件,并逐行插入工作区中相应的java文件中。Java - 文件读取/写入

该文本文件会告诉我哪个文件要插入哪个“.java”类。

比如我有AddressType.Java在我的工作区与干将,设定装置

我有一个文本文件,即AddressType.txt其中有一些额外的方法,评论,实例变量等等,这实际上应该去坐进AddressType.Java文件的主体。

对于这个我有一个在我心中的逻辑和它的工作类型。我知道如何读取/写入文件。这是我的问题。我的方法是将AddressType.Java中的结尾括号替换为一个空格,然后将AddressType.txt的内容拖入AddressType.java中,然后再次关闭该}。

有人可以帮助我如何使用java程序在.java文件中找到EOF}。

我不能这样做手动,因为我有100个Java文件和文本文件移动内容。

请帮忙。我希望有人了解这个问题。

什么都不是运行时间。一切都是编译时间本身。我的意思是我需要将txt文件内容合并到java文件中,然后编译并发布java文件。

回答

2

您可以将整个java文本文件读入内存,并删除最后一个}。类不能很大。即少于几MB。你可以在一行中使用IOUtils.toString()来做到这一点。

String textWithoutLast = IOUtils.toString(
     new FileInputStream(javaFilename) 
    ).replaceAll("}\\s*$",""); 

这将删除最后一个}后面有任意数量的空格,制表符或新行。

+0

注意:这里假定java文件格式良好。 ;) – 2010-12-13 18:18:14

0

你,一旦你有你已经找到了关闭一个相同数量的...

+0

谢谢彼得和pgras。我会尝试一个 – Shiv 2010-12-13 17:03:04

+1

这是行不通的,除非你愿意为Java编写一个词法分析器。你可以将这些{s和}放入一些字符串文字或注释中,但不能保证它们在那里平衡。 – 2010-12-13 17:18:00

0

有人熟悉编写Eclipse插件也许能够扩展现有的代码格式化来算开{ S和收盘}插件来做到这一点。