import java.net.URL;import java.net.URLConnection ; import java.io.InputStreamReader ; import java.io.BufferedReader ; import java.io.IOException ; URL url = new URL( "your URL" ) ; URLConnection uc = url.openConnection() ; BufferedReader reader = new BufferedReader( new InputStreamReader( uc.getInputStream() ) ) ; String line ; while( (line = reader.readLine()) != null ){ // read one line }注意可以用 HttpURLConnection 获得更加细致的控制。
使用 WebCAT 抓去网页,并抽取网页中文本信息:
import pt.tumba.parser.WebCAT ; import pt.tumba.parser.HTMLParser ; import pt.tumba.parser.Content ; HTMLParser parser = new HTMLParser( "profiles" ) ; URL url = new URL( "Your URL" ) ; parser.initTokenizer( url ) ; parser.processData() ; Content content = parser.getContent() ; System.out.println( content.getText() ) ;通过 WebCAT 可以直接 parse 很多格式的东西,比如 PDF、RTF 甚至 SWF 的文本内容。这段代码里面初始化 HTMLParser 的参数是 language profiles 的目录。这个在该 project 的下载的压缩包里面有,利用这些 profile 能够匹配网页的语言类型。比较遗憾的是该库无法确定网页中的哪部分是主体,抽取出来的文字一般会含有其他的信息。比较有用的是里面还有对 link、图片等等的分析。
使用 org.apache.commons.cli.* 解析命令行参数:
import org.apache.commons.cli.* ; Options options = new Options() ; options.addOption( "h", false, "Help" ) ; options.addOption( "o", true, "Output file" ) ; CommandLineParser parser = new PosixParser() ; CommandLine cmd = null ; HelpFormatter formatter = new HelpFormatter() ; try { cmd = parser.parse( options, args) ; } catch( ParseException e ) { System.err.println( "Error in parsing." ) ; formatter.printHelp( "TestCLI", options ) ; System.exit( 1 ) ; } if( cmd.hasOption( "h" ) ) { formatter.printHelp( "TestCLI", options ) ; System.exit( 1 ) ; } if( cmd.hasOption( "o" ) ) { // do something System.out.println( "output file is " + cmd.getOptionValue( "o" ) ) ; }
这里有一个非常好的教程。值得注意的是,org.apache.common 是一个非常大的 Java 程序集合,其中有不少好用的东西,比如编码 base64、压缩文件、xml 到 Java 对象的转换等等,值得有空研究一下的。
使用 java.util.Properties 创建简单的配置文件(key=val 形式的文件),并读取其中的内容。
import java.util.Properties ; import java.util.Set ; import java.io.FileInputStream ; import java.io.IOException ; Properties properties = new Properties() ; FileInputStream in = null ; try { in = new FileInputStream( "test.conf" ) ; properties.load( in ) ; in.close() ; } catch( IOException e ) { System.err.println( "Can't open config file" ) ; System.exit( 1 ) ; } Set<String> keys = properties.stringPropertyNames() ; for( String key : keys ) { System.out.println( key + ": " + properties.getProperty( key ) ) ; }另外可以考虑使用 org.apache.commons.configuration.* 做类似的事情。
可能我还是更喜欢 boost::program_options 解决的方案,呵呵。
No comments:
Post a Comment