对于Java这种语言来说,我只能用一句话来形容,你可以用它来做成各种各样的事情,是的,可能这样的说没法表明啥,其他的语言也能做成很多的事情,当然,不同的语言有不同的特点,做同样的一件事情,所需要用的精力不同,就在于不同的语言有不同的优点和特长,没有那种语言是万能的优势的,也就是说,做不同的事情,有些语言的优势更大一些。
而在我看来,如果有机会,或是有一些时间,而且有对编程这件事情有一些兴趣,不需要很大的兴趣,有就可以,那么就可以了解一下Java,Java是一门神奇的语言,这是真的。
编程语言的发展的好处在于,不断有新的东西加入,这些新加入的贡献以函数库的形式存在,后来者所要做的不是从头开始,而是站在巨人的肩膀上,做更多的事情,这一点在诸多的编程语言中都能成立,关键在于编程是一门创作,而且是一门可以重复的创作,也就是说,在同样的机器的条件和同样的代码和同样的编译器的情况下,你可以对其进行第二次的相同结果的运行(当然,若是在程序中存在了随机的函数,那么结果当然是不一定一样的,类似的情况还有很多,但是我在这里所说的‘同样的结果’,是指,元芳,你懂的。。)。
好了,废话不多说,接下来是关于Java中关于网络的一些函数的使用和实现。
Java最大的优点在于其网络上的方便,真的是很方便!这一点你可以对比很多的其他的语言,是十分明显的,java就是为网络而生的,这一点并不夸张,还有一点,可能不是那么明显,个人觉得Java适合于一些系统的构建的工作,这里面有一点工程的味道,是的,就是这种味道,这一点不像网络那么容易明白,需要一定的编程的经验和经历才能体会的到,当然,我也不敢说我对此有啥经验,就是有一些体验,在其中也真的体会到了很多的乐趣,当然,很多的事情是在特定的时候才有特定的意义,这些意义一旦存在,就是一种终生难以忘怀的,在我看来,编程,如果不从任何的功利的角度看,真的是一件有趣的事情,还是那句话,‘我会编程,别人不会,这件事简直帅呆了!’,还有一句话,‘当我第一次接触它(编程)的时候,我就知道,从此以后再也不会有其他的任何的东西会引起我更大的兴趣了。’第一次读到这些出自编程大牛们的话的时候那种心情真的是很激动,当然,这也是在特定的情景和特定的人生阶段才会出现的东西,留恋不会让我们进步,而只能让人沉沦。
其实我所用到的Java网络的函数很简单,当然这里面也有很多的学问,而且除此之外,Java还为程序员提供了更多的功能,来完成更多的事情,但是在这里,只介绍最最简单的,如果有更多的了解的欲望,可以在网上下载一本‘Java 网络编程’这样的一本书去了解一下。
好了,下面进入真题,不好意思,到现在才进入到了真题,首先呈上一个函数: InputStreamReader isr = new InputStreamReader(url.openStream(),"gbk");
这个是在Java中的输入输出函数,但是就是这个简单的函数,可以完成我们需要的关于网络的全部的需求,所以说,Java啥时为网络而生的语言,这句话可以从这里看出来,当然,你应该能猜到,事情不是这么简单的,即使是这样,也不会只有这么一句话,所以如果你变过程,下面的事情应该有点按照你的想象来发展,首先是相应的出现的变量的定义和赋值,其中的url变量就是一个URL类型的变量,从字面的意思就可以看出这个变量是关于上网的地址的,也就是统一资源定位符,英文的扩展的写法可以从网上查得到,URl变量有自己的构造函数,也就是在开始定义的时候就可以使用的完成初始化的函数,URL url = new URL(strUrl);这个里面的strUrl是在Java中的一个String的变量,这种类型的变量还是和常用的,所以,具体的其他的注意事项不再叙述,例如:String strUrl = “http://www.baidu,com”;这样你就差不多可以上百度这个网页啦!恭喜你!
哈哈,事情还有一些没有完成,所以还不能直接上到上面这个地址里去,还记得那个前面的InputStream吗?这个东西要能读出来,还需要一些操作,就是BufferedReader br = new BufferedReader(isr);这样就可以使用BufferedReader中的ReadLine这个函数来一行一行的读出内容了!恩,事情到这里差不多了,把完整的一个示例的代码贴在下面,这里面可以读出www.baidu.com这个页面里的页面源代码了。
还要加上一句,就是在InputStreamReader这个函数中还有一个参数,这里写的是‘gbk’,这个指的意思是打开链接的方式,这个在处理中文和英文的一些区别的时候会起到作用,如果不给这个参数也是可以的,这样就是默认的方式打开,但是可能会得到一堆乱码,这样就需要改变这里面的方式,在大多数的情况下,可以用‘utf-8’这个参数,基本上就不会出现乱码了,如果还出现乱码,那就用‘gbk’,恩,具体的意义我才你能猜出来,不多说啦。
示例代码:
import java.io.*;
import java.net.*;
import java.util.Timer;
import java.util.regex.*;
public class ceshi {
Timer a = new Timer();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String strUrl = "http://www.baidu.com ";
try {
Pattern p = Pattern.compile("<.+?>");
URL url = new URL(strUrl);
InputStreamReader isr = new InputStreamReader(url.openStream(),"gbk");
BufferedReader br = new BufferedReader(isr);
String str = null;
StringBuffer a =new StringBuffer();
while ((str = br.readLine() )!= null) {
//System.out.println(str); // 这句可以在去掉正则式之后进行恢复看输出有何不同
Matcher m = p.matcher(str);
if(m.find())
{
String resul = m.replaceAll("");
System.out.println(resul);
}
}
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
这个是我经常使用的一个测试的代码,当然,前面的网络地址会经常的改变,其实在其中你可以发现还有一部分不太熟悉,恩,我给出他们代表的东西:正则表达式。好了,现在你可以先上百度查上一查,过10分钟后来看代码,就差不多,你可以分别去掉有正则的部分,然后按照提示恢复前面的依据代码,对比一下,应该就能看出来了。
事情是这样,得到的原始的页面源代码其实包含着很多的标签,这些标签在html语言(如果没听说过可以百度一下)中是很重要的,不然我们的网页就不会那么好看了,但是我们所需要的至少不能有这些标签,这样就需要用到一些技巧去掉标签,这里使用的就是正则,正则语言,正则匹配是一门艺术,我觉得可以这么说,所以,如果有一些空闲,学一下吧,将来会起到大的作用的。
好了,关于Java的网络部分就介绍到这里,以后还会介绍更多的一些关于这方面的内容,敬请关注!
用户1602177 2012-10-29 16:18