单片机与物联网技术应用实战教程
上QQ阅读APP看书,第一时间看更新

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对象。

978-7-111-59182-5-Part01-312.jpg

注意:在Window系统中,用一个反斜线(\)表示的是转义字符,用两个反斜线(\\)表示路径。

2.File类的常见的方法

File类的常见方法说明见表6-6。

6-6 File类的常见方法说明

978-7-111-59182-5-Part01-313.jpg

例如:

978-7-111-59182-5-Part01-314.jpg

输出的结果:

<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类的方法说明

978-7-111-59182-5-Part01-315.jpg

例如:

978-7-111-59182-5-Part01-316.jpg

运行的结果:

978-7-111-59182-5-Part01-317.jpg

字节输入流

输入的内容是:字节输入流

3.OutputStream类

OutputStream类是字节输出流的抽象类。表6-8是该类的常用方法。

6-8 OutputStream类的常用方法

978-7-111-59182-5-Part01-318.jpg

例如:

978-7-111-59182-5-Part01-319.jpg

978-7-111-59182-5-Part01-320.jpg

4.Reader类

Reader类是字符输入流的抽象类,表6-9是该类的方法。

6-9 Reader类常用方法

978-7-111-59182-5-Part01-321.jpg

例如:

978-7-111-59182-5-Part01-322.jpg

运行的结果:

978-7-111-59182-5-Part01-323.jpg

字节输入流

输入的内容:字符输入流

5.Writer类

Writer类是字符输出流的抽象类,表6-10是该类的方法。

6-10 Writer类常用方法

978-7-111-59182-5-Part01-324.jpg

例如:

978-7-111-59182-5-Part01-325.jpg

字符输出流

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类构造方法

978-7-111-59182-5-Part01-326.jpg

构造该类的对象之后,回调用其方法,比如accept(),等待客户端的到来。表6-12所示举例一些该类的方法。

6-12 ServerSocket类的常用方法

978-7-111-59182-5-Part01-327.jpg

3.客户机Socket的类以及方法

客户机创建Socket类的对象之后,会试图与服务器进行连接。连接之后,双方都可以通过Socket进行沟通交流。表6-13是该类的构造方法。

6-13 Socket的构造方法

978-7-111-59182-5-Part01-328.jpg

相应的,Socket的方法,见表6-14。

6-14 Socket的方法

978-7-111-59182-5-Part01-329.jpg

4.TCP程序编程案例

1)服务器的程序如下:

978-7-111-59182-5-Part01-330.jpg

978-7-111-59182-5-Part01-331.jpg

2)客户端的程序如下:

978-7-111-59182-5-Part01-332.jpg

978-7-111-59182-5-Part01-333.jpg

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类的构造方法

978-7-111-59182-5-Part01-334.jpg

3.DategramPacket类的构造方法

DategramPacket类是用来接收和发送数据,其构造方法见表6-16。

6-16 DategramPacket类的构造方法

978-7-111-59182-5-Part01-335.jpg

4.UDP的程序编程案例

1)服务端接收程序如下:

978-7-111-59182-5-Part01-336.jpg

2)客户端发送的程序如下:

978-7-111-59182-5-Part01-337.jpg

978-7-111-59182-5-Part01-338.jpg

发送完毕

欢迎客户到来

而下面“欢迎客户到来”是服务器来响应客户端,并且客户端接收服务器的响应。

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组件,这些组件也有自己的功能。大家想要了解关于组件、组件的构造方法以及常用的方法,可以查阅相关技术书籍。