好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 地下室青年 于 2019-3-4 21:57 编辑
本人新手,初学java,还望各位不吝赐教。谢谢。
下面开始正题。
你还在用千篇一律的微软桌面吗?你还在为寻找一个好看的桌面而奔波吗?
必应首页的高质量图片,总有适合你!!
微软只提供几天的壁纸,但是有些网站保留了下来。
例如https://bing.ioliu.cn/ranking
这是一个工具类,用于储存公共数据和获得文件名。
[Java] 纯文本查看 复制代码 package biying;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Utils {
//记录天数
public static int day = 0;
//获得图片的作为首页的年月日作为文件名
public static String getName(int day) {
//获得当前时间的万年历
Calendar calendar = Calendar.getInstance();
//根据传进来的天数调整成图片当天的时间
calendar.add(Calendar.DAY_OF_MONTH, -day);
//根据调整的万年历获得时间
Date date = calendar.getTime();
//按照我们的时间格调整
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String fileName = sdf.format(date);
return fileName;
}
}
真正用来下载(开多线程)
[Java] 纯文本查看 复制代码 package biying;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class Download4 extends Thread{
public void run() {
while(true){
int day ;
//操作公共数据,需要进行加锁
synchronized (Class.class) {
day = Utils.day++;
}
//下载30天内的图片,数字可以调整,想下多少就下多少,不超过他限度就可以
if(day > 35) {
break;
}
String u = "https://bing.ioliu.cn/v1?d="+ day +"&w=1920&h=1080";
URL url;
try {
url = new URL(u);
DataInputStream dis = new DataInputStream(url.openStream());
File f = new File("d:\\biying\\");
//路径不存在或者不是文件夹,就创建一个
if(!f.exists() || f.isFile()) {
f.mkdir();
}
//根据天数获得文件名
String fileName = Utils.getName(day);
File file = new File("d:\\biying\\"+fileName+".jpg");
//为了避免重复下载,所以需要判断。本来判断一下路径即可,但是实际发现有些下载了102字节
//超过200字节,跳过本次,继续下一次循环
if(file.exists() || file.length() > 200) {
continue;
}
FileOutputStream fos = new FileOutputStream(file);
byte[] bs = new byte[8192];
int len;
while ((len = dis.read(bs)) != -1) {
fos.write(bs, 0, len);
}
fos.close();
dis.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
下面就是开启多线程执行下载的方法
[Java] 纯文本查看 复制代码 package biying;
public class Test4 {
public static void main(String[] args) {
//好像只能开三个线程,多了就报502了
Download4 download1 = new Download4();
Download4 download2 = new Download4();
Download4 download3 = new Download4();
download1.start();
download2.start();
download3.start();
}
}
不足(大神轻拍):
1.用户不能自行选择下载数量,没有检测d盘下是否。
2.提示不完善。
3.图片的完善信息没下载
这百度云分享的(那我这是在做什么,我是谁,我在哪)
https://www.52pojie.cn/thread-851384-1-1.html
https://www.52pojie.cn/thread-868059-1-1.html
害羞的源码:
链接: 链接: https://pan.baidu.com/s/1LgiGjJ1wMXjnkhjRdutxyw 提取码: jsty 复制这段内容后打开百度网盘手机App,操作更方便哦
解压导入ecplise
参考资料:
https://www.52pojie.cn/thread-731013-1-1.html
https://www.cnblogs.com/phper12580/p/9981397.html(这里提供的接口https://cn.bing.com/cnhp/coverstory?d=20181118下载的图片会有必应搜索框)
https://github.com/xCss/bing
https://bing.ioliu.cn/ranking
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|