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]
现在只能做到读取到每一行数据,但不知道如何把需要的部分取出来。希望大家帮助一下,谢谢大家!!![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]
DBNEW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.235.129)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbnew)
)
)
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;
}
}
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;
}
}