Search code examples
javafile-iojava.util.scannerbufferedreaderfileinputstream

Begin the reading of a file from a specific line


i have a file similaire to this : ...

The hotspot server JVM has specific code-path optimizations
# which yield an approximate 10% gain over the client version.
export CATALINA_OPTS="$CATALINA_OPTS -server"
#############HDK1001#############

# Disable remote (distributed) garbage collection by Java clients
# and remove ability for applications to call explicit GC collection
export CATALINA_OPTS="$CATALINA_OPTS -XX:+DisableExplicitGC"

# Check for application specific parameters at startup
if [ -r "$CATALINA_BASE/bin/appenv.sh" ]; then
. "$CATALINA_BASE/bin/appenv.sh"
fi
 #############HDK7564#############
# Disable remote (distributed) garbage collection by Java clients
# and remove ability for applications to call explicit GC collection
export CATALINA_OPTS="$CATALINA_OPTS -XX:+DisableExplicitGC"

i want to begin the reading from the line where exists the word "HDK1001" and end it where the world "HDK7564"

i tryed with this code but i am unable to do the limitation

public static HashMap<String, String> getEnvVariables(String scriptFile,String config) {
    HashMap<String, String> vars = new HashMap<String, String>();
    try {

        FileInputStream fstream = new FileInputStream(scriptFile);
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
        String strLine;
        String var= "HDK1001";

        while ((strLine = br.readLine()) != null  ) {

            if (strLine.startsWith("export") && !strLine.contains("$")) {
                strLine = strLine.substring(7);
                Scanner scanner = new Scanner(strLine);
                scanner.useDelimiter("=");
                if (scanner.hasNext()) {
                    String name = scanner.next();
                    String value = scanner.next();
                    System.out.println(name+"="+value);
                    vars.put(name, value);
                }
            }

Help me please


Solution

  • try this code.

    public static HashMap<String, String> getEnvVariables(String scriptFile,
                String config) {
            HashMap<String, String> vars = new HashMap<String, String>();
            BufferedReader br = null;
            try {
                FileInputStream fstream = new FileInputStream(scriptFile);
                br = new BufferedReader(new InputStreamReader(fstream));
                String strLine = null;
                String stopvar = "HDK7564";
                String startvar = "HDK1001";
                String keyword = "export";
                do {
                    if (strLine != null && strLine.contains(startvar)) {
                        if (strLine.contains(stopvar)) {
                            return vars;
                        }
                        while (strLine != null && !strLine.contains(stopvar)) {
                            strLine = br.readLine();
                            if (strLine.startsWith(keyword)) {
                                strLine = strLine.substring(keyword.length())
                                        .trim();
                                String[] split = strLine.split("=");
                                String name = split[0];
                                String value = split[1];
                                System.out.println(name + "=" + value);
                                vars.put(name, value);
                            }
                        }
                    }
                } while ((strLine = br.readLine()) != null);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return vars;
        }