Java打印文件中的特定数据

Java打印文件中的特定数据,java,eclipse,substring,reader,Java,Eclipse,Substring,Reader,我有一个txt文件。在这里有一些规则,我必须把括号中的所有内容都放在一个单独的文件中。但我甚至没有在控制台上显示它 我已经尝试了很多方法,但我总是会遇到一些错误 对于现在的解决方案,它只是在控制台中不显示任何内容。有人知道为什么吗 括号始终与“InputParameters”在同一行中。我在代码末尾尝试了一些类似的方法 概述的解决方案不起作用。也许有人有主意了 使用下面的代码,我得到以下错误: 线程“main”java.lang.StringIndexOutOfBoundsException中的

我有一个txt文件。在这里有一些规则,我必须把括号中的所有内容都放在一个单独的文件中。但我甚至没有在控制台上显示它

我已经尝试了很多方法,但我总是会遇到一些错误

对于现在的解决方案,它只是在控制台中不显示任何内容。有人知道为什么吗

括号始终与“InputParameters”在同一行中。我在代码末尾尝试了一些类似的方法

概述的解决方案不起作用。也许有人有主意了

使用下面的代码,我得到以下错误:

线程“main”java.lang.StringIndexOutOfBoundsException中的异常: 字符串索引超出范围:java.lang.String.substring处为-1(未知 源代码),位于blabla.execute.main(execute.java:17)

下面是txt文件中的一些内容:

dialect  "mvel"   
rule "xxx"  
    when
        InputParameters (xy <= 1.124214, xyz <= 4.214214, abc <= 1.12421, khg <= 1.21421)   
    then


Ty

问题是,如果要在不存在搜索字符串的字符串中获取字符串(indexOf())的索引,indexOf将返回-1,如果方法子字符串接收到参数-1,则会抛出StringIndexOutOfBoundsException。我建议首先检查一行是否包含“InputParameter”,因为您说过这个词总是在同一行中,然后使用substring和indexOf方法获取括号内的字符串

这个适合我

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileRead {
    public static void main(String[] args) {
        final String filename = "$insertPathToFile$"; 
        BufferedReader br = null;

        try {
            br = new BufferedReader(new FileReader(filename));
            String line = br.readLine();
            while(line != null){
               if (line.contains("InputParameters")) {
                   System.out.println(line.substring(line.indexOf("(")+1, line.indexOf(")")));
               } // end if
               line = br.readLine();
            } // end while
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            try {
                br.close();
            } catch (IOException e) {}
        } // end try
    } // end main
} // end class
线程“main”java.lang.StringIndexOutOfBoundsException中的异常: 字符串索引超出范围:java.lang.String.substring处为-1(未知 源代码),位于blabla.execute.main(execute.java:17)

此异常意味着
-1
已传递给
substring()
方法。此
-1
indexOf()
在找不到任何内容时生成

你所有的行都包含括号吗?应检查管路中是否存在支架

 while ((line = br.readLine()) != null) {
        if(line.indexOf(("\\(") != -1 && line.indexOf(("\\)") != -1) {
            System.out.println(line.substring(line.indexOf(("\\("), line.indexOf(("\\)")))));
        }
    }

请删除不使用的代码部分。还请向我们展示一个您想要阅读的输入的小样本。如果能看到文本文件以及一个最小的代码示例,那将非常好。@PhillipS“我刚刚更改了while条件,并且…”-将该信息添加到您的问题中请不要将代码放入注释中,请回答您的问题。用新代码编辑了我的问题,一个错误和txt文件中的一些内容谢谢您的回答。这帮了我的忙。但是我现在不会结束这个问题,因为我现在不能测试它。
 while ((line = br.readLine()) != null) {
        if(line.indexOf(("\\(") != -1 && line.indexOf(("\\)") != -1) {
            System.out.println(line.substring(line.indexOf(("\\("), line.indexOf(("\\)")))));
        }
    }