首先说一下起因:
发现网络上好多的收费下载程序的下载地址都是直连的。没有防盗链处理。。只要知道地址就能下载。而地址中文件名则是以年月日时分秒为内容。例如:http://***/***/110529130756.zip 就是2011年05月29日13点07分56秒上传的。还有则是以格林尼治时间+到现在时间差的秒数 这些地址通过嵌套FOR循环就出来了。 只是批量地址是否有文件?文件大小几何?都得经过扫描检测。于是才想编写该程序。
思路:①、利用for循环生成地址
②、通过文件下载类、方法和http协议字段,判断文件是否存在、获取文件大小。
③、多线程实现同时扫描
④、记录、输出扫描结果到txt文档。在此,本人刚刚学完java基础。对多线程和网络操作不是很熟悉。。大家可以帮忙弄一下么?感谢万分!! 帮忙写一下②、③代码。当然整个程序编写下来也行咯。。O(∩_∩)O~
发现网络上好多的收费下载程序的下载地址都是直连的。没有防盗链处理。。只要知道地址就能下载。而地址中文件名则是以年月日时分秒为内容。例如:http://***/***/110529130756.zip 就是2011年05月29日13点07分56秒上传的。还有则是以格林尼治时间+到现在时间差的秒数 这些地址通过嵌套FOR循环就出来了。 只是批量地址是否有文件?文件大小几何?都得经过扫描检测。于是才想编写该程序。
思路:①、利用for循环生成地址
②、通过文件下载类、方法和http协议字段,判断文件是否存在、获取文件大小。
③、多线程实现同时扫描
④、记录、输出扫描结果到txt文档。在此,本人刚刚学完java基础。对多线程和网络操作不是很熟悉。。大家可以帮忙弄一下么?感谢万分!! 帮忙写一下②、③代码。当然整个程序编写下来也行咯。。O(∩_∩)O~
一个线程(可以为主线程)利用for循环生成地址字符串,把地址字符串保存到一个队列中
多个扫描线程分别从队列中取出地址字符串,调用文件下载类的相关方法
各扫面线程根据调用文件下载类的相关方法的返回值,把结果写到文件中LZ先试着自己写,然后看看写到什么地方时不会,再提问。
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
请问一下我写 String length = url.getHeader("Content-Length") 显示找不到方法呢?要导入什么包吗?
url是java.net.URL类型
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");
}
你当人家开网站的都傻阿