首先说一下起因:
   发现网络上好多的收费下载程序的下载地址都是直连的。没有防盗链处理。。只要知道地址就能下载。而地址中文件名则是以年月日时分秒为内容。例如:http://***/***/110529130756.zip  就是2011年05月29日13点07分56秒上传的。还有则是以格林尼治时间+到现在时间差的秒数  这些地址通过嵌套FOR循环就出来了。 只是批量地址是否有文件?文件大小几何?都得经过扫描检测。于是才想编写该程序。
思路:①、利用for循环生成地址
      ②、通过文件下载类、方法和http协议字段,判断文件是否存在、获取文件大小。
      ③、多线程实现同时扫描
      ④、记录、输出扫描结果到txt文档。在此,本人刚刚学完java基础。对多线程和网络操作不是很熟悉。。大家可以帮忙弄一下么?感谢万分!!   帮忙写一下②、③代码。当然整个程序编写下来也行咯。。O(∩_∩)O~

解决方案 »

  1.   

    大概跟你说说思路吧
    一个线程(可以为主线程)利用for循环生成地址字符串,把地址字符串保存到一个队列中
    多个扫描线程分别从队列中取出地址字符串,调用文件下载类的相关方法
    各扫面线程根据调用文件下载类的相关方法的返回值,把结果写到文件中LZ先试着自己写,然后看看写到什么地方时不会,再提问。
      

  2.   

    主要考虑到http请求头与响应头按照规律构造出一组文件名请求服务器地址得到响应头  404 文件不存在如果存在则分析响应头,这是我的一个图片响应头Date Mon, 30 May 2011 07:23:25 GMT
    Server Apache/2.2.19 (Win32) mod_jk/1.2.31
    Last-Modified Thu, 26 May 2011 08:32:08 GMT
    Etag "20000000093b7-1736-4a429a81e1200"
    Accept-Ranges bytes
    Content-Length 5942
    Content-Type image/png
      

  3.   


    请问一下我写 String length = url.getHeader("Content-Length")  显示找不到方法呢?要导入什么包吗?
    url是java.net.URL类型
      

  4.   


    URL url = new URL("http://192.168.41.82:8080/photobookonline/admin/main/skin/ap/line.gif");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //conn.setDoInput(true);
    // conn.setDoOutput(true);
    conn.setUseCaches(false);
    // conn.setRequestMethod("POST");
    conn.setRequestMethod("GET");
    conn.setReadTimeout(5000);
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.connect(); // OutputStream out = conn.getOutputStream(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    //InputStream in = conn.getInputStream();
    System.out.println("type:" + conn.getContentType());
    System.out.println("size:" + conn.getContentLength()); } if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
    System.out.println("not found");
    }
      

  5.   

    for不到两次,人家就ban你IP了
    你当人家开网站的都傻阿