6.3 Java提高
6.3.1 文件编程
File文件编程是通过File类对象来进行文件或者目录的访问,如文件或目录的名称、大小、路径、创建和删除等。
1.创建文件类
可以通过File的构造方法来创建文件类。下面有三种构建方法:
第一种:File(String pathname);
语法:newFile(filepath)。
第二种:File(String parent,String child);
语法:newFile(parent,child)。
第三种:File(File parent,String child);
语法:File(File parent,String child)。
下面举例各种方式来创建File对象。
注意:在Window系统中,用一个反斜线(\)表示的是转义字符,用两个反斜线(\\)表示路径。
2.File类的常见的方法
File类的常见方法说明见表6-6。
表6-6 File类的常见方法说明
例如:
输出的结果:
<terminated>Filetest[JavaApplication]C:\ProgramFiles\Jave\jre1.8.0_111\bin\javaw.exe(2017-3-4下午3:18:05)
文件夹目录名称:QQMusic1273.13.18.14
文件夹目录是否存在:true
文件夹目的相对路径:F:\qq音乐\QQMusic1273.13.18.14
文件夹目录的绝对路径:F:\qq音乐\QQMusic1273.13.18.14
是否可执行文件:true
文件夹目录可以读取:true
文件夹目录可以写入:true
文件夹目录上级路径:F:\qq音乐
文件夹目录大小:122888
是否为文件类型:false
是否为文件夹类型:true
6.3.2 Java文件I/O编程
1.I/O概念
了解Java中文件编程,可以知道文件或者目录的相关信息。比如文件的名称、大小、文件的路径等。这仅仅是对文件本身进行操作,但是不能对文件中的内容进行处理。下面将介绍文件的I/O编程。
I/O即输入和输出,在介绍输入和输出之前,应先知道“流”这个概念。“流”的概念来自UNIX中的管道,是计算机输入和输出之间流的数据序列。例如:一杯水中倒入到另一杯水中,在水流倒入的过程中就体现“流”的概念。Java中的I/O原理就是基于数据流进行的输入和输出。所以数据流包括两种流:输入流和输出流。输入流是用来读取数据,是外界设备(如键盘、文件、网络等)到程序内存的通信通道。输出流是用来写数据的,是由程序内存到外接设备(如显示器、文件、打印机等)的通信通道。
在Java中,输入流和输出流的操作就是继承InputStream类(字节输入流)、Reader类(字符输入流)、OutputStream类(字节输出流)以及Writer类(字符输出流)。
2.InputStream类
InputStream类是字节输入流的抽象类。表格6-7是该类的常用方法。
表6-7 InputStream类的方法说明
例如:
运行的结果:
字节输入流
输入的内容是:字节输入流
3.OutputStream类
OutputStream类是字节输出流的抽象类。表6-8是该类的常用方法。
表6-8 OutputStream类的常用方法
例如:
4.Reader类
Reader类是字符输入流的抽象类,表6-9是该类的方法。
表6-9 Reader类常用方法
例如:
运行的结果:
字节输入流
输入的内容:字符输入流
5.Writer类
Writer类是字符输出流的抽象类,表6-10是该类的方法。
表6-10 Writer类常用方法
例如:
字符输出流
6.文件的输入、输出流
前面介绍了4种抽象类以及各类的方法。下面来介绍文件的输入、输出流。文件流的操作是为了使文件之间能够实现数据的传输。根据流的类型来分,可以分为文件字符流和文件字节流;根据流的流向来分,可以分为流的文件输入流和文件输出流。
1)字节输入流 文件字节输入流可以从文件中读取数据,并且使用FileInputStream()的构造方法,调用该类的多种方法。比如read(),reset()等。但前提是需要建立FileInput-Stream类的实例对象。
语法如下:
new=FileInputStream(file);或者是new=FileInputStream(filepath);
前者的file是File类型实例的一个对象,后者是根据文件的路径和名称。两者都可以创建FileInputStream类的实例对象。
2)字节输出流 文件字节输入流是从文件输出数据,并且使用FileOutputStream()的构造方法,调用该类的多种方法。前提是需要建立FileIOutputStream类的实例对象。
语法如下:
new=FileInputStream(file);或者是new=FileInputStream(filepath);
前者的file是File类型实例的一个对象,后者是根据文件的路径和名称。两者都可以创建FileOutputStream类的实例对象。
3)复制文件 介绍了文件流,接下来用Java语言对文件流进行程序编写,加深对文件流使用。
而文件的字符输入、输出流,和上面的字节输入、输出流其实本质上是一样的,在这里不做详细的说明。
6.3.3 JavaTCP编程
1.基本概念
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。而TCP编程的原理是通过利用Socket类来编程程序,并通过TCP使两个应用程序进行通信,从而实现计算机与计算机之间的数据传输。应用程序的对象分为服务器(server)和客户机(client)。下面介绍服务器和客户机如何进行通信?其步骤如下:
第一步:服务器程序中创建一个ServerSocket(端口#)。
第二步:ServerSocket调用accept()的方法,等待客户端的连接,这一过程叫侦听。
第三步:客户端程序创建一个Socket,试图链接服务端。
第四步:服务器成功接收客服端的请求。这时ServerSocket调用accept()的方法会返回一个Socket()的对象,否则一直等待。
2.服务器的Server Socket类及方法
ServerSocket类是用于建立一个等待的请求的服务器套接字对象。该类的构造方法见表6-11。
表6-11 ServerSocket类构造方法
构造该类的对象之后,回调用其方法,比如accept(),等待客户端的到来。表6-12所示举例一些该类的方法。
表6-12 ServerSocket类的常用方法
3.客户机Socket的类以及方法
客户机创建Socket类的对象之后,会试图与服务器进行连接。连接之后,双方都可以通过Socket进行沟通交流。表6-13是该类的构造方法。
表6-13 Socket的构造方法
相应的,Socket的方法,见表6-14。
表6-14 Socket的方法
4.TCP程序编程案例
1)服务器的程序如下:
2)客户端的程序如下:
6.3.4 JavaUDP编程
1.基本概念
UDP(User Dategram Protocol,数据报协议)是一种简单的、面向数据报的无连接的协议。和TCP相比,是一种不可靠的通信协议。但它的优点是信息传输速度快,有消息的边界,可以一台服务器给多个客户同时传输信息。UDP的工作原理是将数据报发送到目的地,然后别人来接收数据包的过程。具体步骤如下:
第一步:通过DategramSocket创建一个套接字。
第二步:通过使用DategramPacket的构造方法,将发送的数据封装到数据包中。
第三步:通过DategramSocket类send()方法,发送数据包。
第四步:在另个一应用程序中通过第一步来创建套接字。
第五步:通过第二步的方法来接收数据包。
第六步:通过DategramPacket类receive()方法,接收数据包。
2.DategramSocket类的构造方法。
DategramSocket类适用于建立一个负责发送和接收点的套接字对象,其构造方法见表6-15。
表6-15 DategramSocket类的构造方法
3.DategramPacket类的构造方法
DategramPacket类是用来接收和发送数据,其构造方法见表6-16。
表6-16 DategramPacket类的构造方法
4.UDP的程序编程案例
1)服务端接收程序如下:
2)客户端发送的程序如下:
发送完毕
欢迎客户到来
而下面“欢迎客户到来”是服务器来响应客户端,并且客户端接收服务器的响应。
6.3.5 JavaSwing编程
1.Swing概念
Swing是为了GUI(图形用户界面)所服务的。而Swing是在AWT基础上发展起来的。因为AWT自身的一些不足,所以出现了Swing,Swing的功能比AWT要强大,但并不能完全代替AWT。所以,为了构建GUI,在Java中提供了两个包,分别是java.awt和javax.swing包。
2.Swing组件
下面将简单地介绍Swing常见基本组件,以及它们的功能介绍。
(1)Jbutton组件
1)Jbutton组件。表示Swing普通按钮,它们使用频率较多的组件之一。Swing按钮不仅可以在上面加文字,还可以在上面加图标。
2)其构造方法主要有以下这些形式结构:
JButton(); //显示内容为空的按钮;
JButton(Stringtext); //带有内容的按钮;
JButton(Iconicon); //带有图标的按钮;
3)常用的方法有以下形式结构:
SetRolloverEnabled(true); //设置图标的
voidsetIcon(Iconicon); //在不同状态下的图标
setRollverIcon(Iconicon);
setPressedIcon(Iconicon);
setDisableIcon(Iconicon);
StringgetText()、voidsetText(Stingtext) //获得,设置按钮文字
(2)JRadioButton组件
1)JRadioButton(单选按钮),可以在GUI界面中,并且使用ButtonGroup类实现单项的选择。
2)其构造方法主要有以下这些形式结构:
JRadioButton(); //建立无内容的按钮;
JRadioButton(Iconi); //参数i设置单选按钮的图标
JRadioButton(Sringtext); //建立有内容的按钮;
JRadioButton(Sringtext Iconicon Boolean selected);
(3)JcheckBox组件
1)JcheckBox(复选框),就是类似于多选题一样。可以在GUI界面上,选中多个选项。
2)其构造方法主要有以下这些形式结构:
Jcheck();
Jcheck(String t);
Jcheck(String t,Icon i,Boolean selected) //设置文字和图标,并且文
字是否选中。
(4)JTextfield组件
1)JTextfield(文本框),就是用来显示一行的文本。
2)其构造方法主要有以下这些形式结构:
JTextfield();
JTextfield(stringt); //设置文本内容
JTextfield(intf); //设置文本的长度
3)其常用的方法有以下形式结构:
getText();
(5)JPasswordfield组件
1)JPasswordfield(密码框)。就是相当于在登录qq账户时,输入密码的时候一样,显示的内容都是不能被看见的。
2)其构造方法主要有以下这些形式结构:
JPasswordfield();
JPasswordfield(Stringt);
JPasswordfield(intf);
3)常用的方法有以下形式结构:
getPassword();
void setEchochar(charecho);//甚至回显的字符
(6)JTextArea组件
JTextArea(文本区),和上面的文本框是类似的。区别是文本区是显示多行文本内容;
(7)JLabel组件
1)JLabel(标签),用来显示文本和图标。
2)其构造方法主要有以下这些形式结构:
Jlabel();
Jlabel(String t); //创建文本内容的标签
Jlabel(Icon i); //设置有图标的标签
3)常用的方法有以下形式结构。
setText(Srting t);
setIcon(Iconi);
(8)其他组件
Jlist组件、JDialog组件、JOptionPane组件,这些组件也有自己的功能。大家想要了解关于组件、组件的构造方法以及常用的方法,可以查阅相关技术书籍。