JAVA读取ORACLE的配置文件,想提取出红色部分的内容。不知道如何进展了。
现在只能做到读取到每一行数据,但不知道如何把需要的部分取出来。希望大家帮助一下,谢谢大家!!![code=INIFile]
# TNSNAMES.ORA Network Configuration File: E:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.DBTEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.215.130)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dbtest)
    )
  )DBNEW =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.235.129)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dbnew)
    )
  )[/code]

解决方案 »

  1.   

    忘记代码中不可以使用颜色了,不好意思
    DBNEW =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.235.129)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = dbnew)
        )
      )
      

  2.   

    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
       
        private final String regex = 
            "(\\w+)\\s*=.*?" +
            "\\(\\s*HOST\\s*=\\s*(\\d{1,3}(?:\\.\\d{1,3}){3}).*?" +
            "\\(\\s*PORT\\s*=\\s*(\\d{1,5}).*?" +
            "\\(\\s*SERVICE_NAME\\s*=\\s*(\\w+)";
        private Pattern pattern = null;    public static void main(String args[]) throws IOException {
            String str =
                "# TNSNAMES.ORA Network Configuration File: E:\\oracle\\ora92\\network\\admin\\tnsnames.ora\n" +
                "# Generated by Oracle configuration tools.\n" +
                "\n" +
                "DBTEST =\n" +
                "  (DESCRIPTION =\n" +
                "    (ADDRESS_LIST =\n" +
                "      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.215.130)(PORT = 1521))\n" +
                "    )\n" +
                "    (CONNECT_DATA =\n" +
                "      (SERVICE_NAME = dbtest)\n" +
                "    )\n" +
                "  )\n" +
                "\n" +
                "DBNEW =\n" +
                "  (DESCRIPTION =\n" +
                "    (ADDRESS_LIST =\n" +
                "      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.235.129)(PORT = 1521))\n" +
                "    )\n" +
                "    (CONNECT_DATA =\n" +
                "      (SERVICE_NAME = dbnew)\n" +
                "    )\n" +
                "  )";
            Test t = new Test();
            List<OracleConfiguration> list = t.get(str);
            for(OracleConfiguration conf : list) {
                System.out.println(conf);
            }
        }
        
        public List<OracleConfiguration> get(String str) {
            if(pattern == null) {
                pattern = Pattern.compile(regex, Pattern.DOTALL);
            }
            List<OracleConfiguration> list = new ArrayList<OracleConfiguration>();
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                OracleConfiguration conf = new OracleConfiguration();
                conf.setName(matcher.group(1));
                conf.setHost(matcher.group(2));
                conf.setPort(matcher.group(3));
                conf.setServiceName(matcher.group(4));
                list.add(conf);
            }
            return list;
        }
    }class OracleConfiguration {
        private String name;
        private String host;
        private String port;
        private String serviceName;
        public String getHost() {
            return host;
        }
        public void setHost(String host) {
            this.host = host;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPort() {
            return port;
        }
        public void setPort(String port) {
            this.port = port;
        }
        public String getServiceName() {
            return serviceName;
        }
        public void setServiceName(String serviceName) {
            this.serviceName = serviceName;
        }
        @Override
        public String toString() {
            return "Name: " + name + ", Host: " + host + ", Port: " + port + ", Service Name: " + serviceName;
        }
    }
      

  3.   

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    import java.util.regex.MatchResult;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
       
        private final String regex = 
            "(\\w+)\\s*=.*?" +
            "\\(\\s*HOST\\s*=\\s*(\\d{1,3}(?:\\.\\d{1,3}){3}).*?" +
            "\\(\\s*PORT\\s*=\\s*(\\d{1,5}).*?" +
            "\\(\\s*SERVICE_NAME\\s*=\\s*(\\w+)";
        private Pattern pattern = null;    public static void main(String args[]) throws FileNotFoundException {
            Test test = new Test();
            File file = new File("f:/abc.txt");
            List<OracleConfiguration> list = test.get(file);
            for(OracleConfiguration conf : list) {
                System.out.println(conf);
            }        
        }    /**
         * Find pattern from file
         * JDK version must be above 1.5
         */    
        public List<OracleConfiguration> get(File file) throws FileNotFoundException {
            List<OracleConfiguration> list = new ArrayList<OracleConfiguration>();
            Scanner scanner = new Scanner(file);
            if(pattern == null) {
                pattern = Pattern.compile(regex, Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
            }
            String str = scanner.findWithinHorizon(pattern, 0);
            while(str!=null) {
                MatchResult matcher = scanner.match();
                str = scanner.findWithinHorizon(pattern, 0);
                OracleConfiguration conf = new OracleConfiguration();
                conf.setName(matcher.group(1));
                conf.setHost(matcher.group(2));
                conf.setPort(matcher.group(3));
                conf.setServiceName(matcher.group(4));
                list.add(conf);
            }
            scanner.close();
            return list;
        }    /**
         * Find pattern from string
         */
        public List<OracleConfiguration> get(String str) {
            if(pattern == null) {
                pattern = Pattern.compile(regex, Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
            }        
            List<OracleConfiguration> list = new ArrayList<OracleConfiguration>();
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                OracleConfiguration conf = new OracleConfiguration();
                conf.setName(matcher.group(1));
                conf.setHost(matcher.group(2));
                conf.setPort(matcher.group(3));
                conf.setServiceName(matcher.group(4));
                list.add(conf);
            }
            return list;
        }
    }