日期:2014-05-17  浏览次数:20885 次

麻烦.大家帮忙看个高级JAVA_IO问题
目录结构如下:
  文件夹1
  1.html
  2.html
  .
  .
  .
  文件夹2
  1.txt
  2.txt
  .
  .
  .
现在有如下HTML代码:
<a href="javascript:if(confirm('http://music.qq.com/ \n\n该文件无法用 Teleport Ultra 下载, 因为 它是一个域或路径外部被设置为它的启始地址的地址。 \n\n你想在服务器上打开它?'))window.location='http://music.qq.com/'" tppabs="http://music.qq.com/" class="">QQ音乐</a>
想实现的效果是:
1.首先操作文件夹1下面的所有html页面
2.使用JAVA_IO遍历html文件里面所有的<a>标签
3.把遍历到的<a>标签中的tppabs属性(href下的网址也可以)下面的网址和<a>标签之间的文本取出
4.把取出的网址和文本再以:文本+"*"+URL的格式写入到*.txt中

  自己半天没弄明白希望高手帮忙写一下代码.要有注释哦..顺便想学习一下..^_^

------解决方案--------------------
可以用正则表达式统统秒杀
------解决方案--------------------
Java code

//        String u="http://music.qq.com";
//        URL url=new URL(u);
//        URLConnection con=url.openConnection();
//        InputStream is=con.getInputStream();
//        OutputStream os=new FileOutputStream(new File("D:\\test\\aa.html"));
//        int len=0;
//        byte[] buffer=new byte[1024];
//        while ((len=(is.read(buffer)))!=-1) {
//            os.write(buffer, 0, len);
//        }
//        os.close();
//        is.close();
//*********************************************************************************************************
//        String regex="<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>";
        String hrefRegex="href=['\"]?(.*?)['\" ]\"";
        StringBuilder sb=new StringBuilder();
        Map<String, String> map=new HashMap<String, String>();
        String href="";
        String text="";
        String matchedText="";
        Pattern pattern=Pattern.compile(hrefRegex);
        File file=new File("D:\\test\\aa.html");
        InputStream is=new FileInputStream(file);
        BufferedReader reader=new BufferedReader(new InputStreamReader(is, "GBK"));
        while (reader.read()!=-1) {
            sb.append(reader.readLine());
        }
        Matcher matcher=pattern.matcher(sb);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }