搜索特定行的文本文件

我想在文本文件中搜索特定的文本行。如果我正在寻找的文本位于特定行中,我想进一步阅读该行以获取更多输入。搜索特定行的文本文件

到目前为止,我有3个标签,我正在寻找。

@public 

@private

@virtual

如果我发现任何这些上线,我想读下一步怎么走这样的例子,我能有这样一行:

@public double getHeight(); 

如果我确定标签我发现是@public然后我必须采取以下部分后的空白,直到我到达分号。问题是,我无法真正想到一种有效的方法来做到这一点,而不会过度使用charAt(..),这两种方法看起来都不错,但是对于大文件的长期运行或者对于连续的多个文件。

我想帮助解决这个问题,因为我目前无法理解我该怎么做。代码本身用于解析C++文件中的注释,以便稍后生成Header文件。伪代码部分是我卡住的地方。有人建议BufferedReader,其他人说Scanner。我和Scanner一起,因为这似乎是BufferedReader的替代品。

public void run() { 

Scanner scanner = null;

String filename, path;

StringBuilder puBuilder, prBuilder, viBuilder;

puBuilder = new StringBuilder();

prBuilder = new StringBuilder();

viBuilder = new StringBuilder();

for(File f : files) {

try {

filename = f.getName();

path = f.getCanonicalPath();

scanner = new Scanner(new FileReader(f));

} catch (FileNotFoundException ex) {

System.out.println("FileNotFoundException: " + ex.getMessage());

} catch (IOException ex) {

System.out.println("IOException: " + ex.getMessage());

}

String line;

while((line = scanner.nextLine()) != null) {

/**

* Pseudo Code

* if @public then

* puBuilder.append(line.substring(after white space)

* + line.substring(until and including the semicolon);

*/

}

}

}

回答:

String tag = ""; 

if(line.startsWith("@public")){

tag = "@public";

}else if{....other tags....}

line = line.substring(tag.length(), line.indexOf(";")).trim();

这给你从标签的端部(在这种情况下是公共的)进入一字符串,然后以分号之前的字符,然后修剪掉两端的空白。

回答:

我可能会误解你..但你只是想找String.contains()

if(line.contains("@public")){} 

回答:

if (line.startsWith("@public")) { 

...

}

回答:

如果您允许使用开源库,我建议使用apache common-io和common-lang库。这些广泛使用的Java库会让你的生活变得更简单。

String text = null; 

InputStream in = null;

List<String> lines = null;

for(File f : files) {

try{

in = new FileInputStream(f);

lines = IOUtils.readLines(in);

for (String line: lines){

if (line.contains("@public"){

text = StringUtils.substringBetween("@public", ";");

...

}

}

}

catch (Exception e){

...

}

finally{

// alway remember to close the resource

IOUtils.closeQuietly(in);

}

}

以上是 搜索特定行的文本文件 的全部内容, 来源链接: utcz.com/qa/262119.html

回到顶部