net包之:网络编程(基本概念、类和接口、InetAddress类、URL类与URLConnection类、文件下载)
一、获得本机的对象
1.InetAddress类
InetAddress getLocalHost(); //返回本地主机(计算机名/IP地址)。
String getHostAddress(); //返回本机的IP地址
String getHostName(); //返回本机计算机名
2.URL类
URL:统一资源定位符,它是指向互联网“资源”的指针。
//www.baidu.com 域名---唯一性
//223.123.107.11 IP地址---唯一性
URL url=new URL("http://www.baidu.com"); //获得
url.getHost(); //获得对象的主机名
url.getDefaultPort(); //获得对象的默认端口号
url.getPath(); //获得路径部分(除域名外的)
url.getPort(); //获得端口号,未设置返回-1
url.getFile(); //获得文件名(与getPath()类似)
url.openStream(); //打开到此 URL 的连接,并返回一个用于从该连接读入的 InputStream。
二、下载
1.下载图片
字节流案例:
//指定下载的图片地址
URL url=new URL("http://www.baidu.com/img/bd_logo1.png");
//打开服务器的读入连接
InputStream is=url.openStream();
BufferedInputStream bis=new BufferedInputStream(is);
FileOutputStream fos=new FileOutputStream("e:\\temp\\baidu.png"); //创建文件输出流,用于将接收到的图片流存入该文件,注意文件的扩展名最好保持一致。
BufferedOutputStream bos=new BufferedOutputStream(fos);
int n=0;
while((n=bis.read())!=-1){ //边读
bos.write(n); //边写
}
bos.close();
bis.close();
System.out.println("下载完毕");
2.使用字符流将网页下载
//打开url读入连接
URL url=new URL("http://www.baidu.com");
//字节转字符,并创建字符读流
InputStream is=url.openStream();
InputStreamReader sr=new InputStreamReader(is); BufferedReader br=new BufferedReader(isr);
FileWriter fw=new FileWriter("e:\\default1.html");
BufferedWriter bw=new BufferedWriter(fw);
String s=null;
while((s=br.readLine())!=null){ //边读(读一行)
bw.write(s); //边与
bw.newLine(); //换行
}
bw.flush();
bw.close();
br.close();
System.out.println("下载完毕");
三、URLConnection类:
URL url=new URL("http://www.baidu.com");
URLConnection uc=url.openConnection(); //打开url连接流
InputStream is=uc.getInputStream(); //字节流
URLConnection中的方法:
.getConnectTimeout(); //得到网络延时(毫秒)
.getContentLength(); //得到文件内容大小
.getContentType(); //得到文件类型
四、Pattern类----模式类
1.方法
static Pattern compile(String regex) //将给定的正则表达式编译并赋予给Pattern类
String[] split(CharSequence input, int limit) //将目标字符串按照Pattern里所包含的正则表达式为模进行分割。
2.案例
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches(); 以上三句合并一句:
boolean b = Pattern.matches("a*b", "aaaaab");
五Matcher类----匹配类
1.方法
boolean find() //方法扫描输入序列以查找与该模式匹配的下一个子序列
2.案例
//获得的html页面中的字符串(切记把StringBuffer转成String)String str=bs.toString();
//设置正则表达式:
String rex="<a\\shref=[\"|']([^>\"]+)[\"|']([^>]*)>";
//将给定的正则表达式编译到模式中
Pattern pa=Pattern.compile(rex);
//在字符串中执行匹配
Matcher mc=pa.matcher(str);
//在代码里面去找符合条件的
while(mc.find()){ //如果找到
System.out.println(mc.group(1)); //代表取<a>标签中第1个属性的值
} 说明:.group(); //取出来的是整个标签<a href="1.html"> .group(int group); //int group===1时,取出来的是src属性的值,即1.html
如果大家想浏览我的下一篇文章,请留言
此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438