与Java流操作有关的类或接口
IO流的概念
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类
- 字节流
以字节(8bit)为单位,没有用到缓存 - 字符流
以字符(16bit)为单位,根据码表映射字符,一次可以读多个字节,处理输入输出时用到了缓存
区别
1. 字节流处理输入输出时,没有用到缓存;字符流用到了缓存
2. 字节流可以处理所有类型的数据(图片、视频等),字符流只能处理字符类型的数据
Java IO 文件读写媒介
File类
File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
public class FileDemo {
public static void main(String[] args) {
//检查文件是否存在
File file = new File( "d:/test.txt");
boolean fileExists = file.exists();
System. out.println( fileExists);
//创建文件目录,若父目录不存在则返回false
File file2 = new File( "d:/fatherDir/subDir");
boolean dirCreated = file2.mkdir();
System. out.println( dirCreated);
//创建文件目录,若父目录不存则连同父目录一起创建
File file3 = new File( "d:/fatherDir/subDir2");
boolean dirCreated2 = file3.mkdirs();
System. out.println( dirCreated2);
File file4= new File( "d:/test.txt");
//判断长度
long length = file4.length();
//重命名文件
boolean isRenamed = file4.renameTo( new File("d:/test2.txt"));
//删除文件
boolean isDeleted = file4.delete();
File file5= new File( "d:/fatherDir/subDir");
//是否是目录
boolean isDirectory = file5.isDirectory();
//列出文件名
String[] fileNames = file5.list();
//列出目录
File[] files = file4.listFiles();
}
}
随机读取File文件:RandomAccessFile类
该对象并不是流体系中的一员,其封装了字节流,同时还封装了一个缓冲区(字符数组),通过内部的指针来操作字符数组中的数据。 该对象特点:
1. 该对象只能操作文件,所以构造函数接收两种类型的参数:a.字符串文件路径;b.File对象。
2. 该对象既可以对文件进行读操作,也能进行写操作,在进行对象实例化时可指定操作模式(r,rw)
Java IO 网络读写媒介
关于Java IO面向网络媒介的操作即Java 网络编程,其核心是Socket,同磁盘操作一样,java网络编程对应着两套API,即Java IO和Java NIO。
Socket
- 定义
网络上两个程序通过一个双向的通信连接实现数据的交互,这个双向链路的一端称为一个Socket(套接字)。Socket由IP地址和端口号唯一确定 - Java Socket类型
- 面向连接的Socket通信协议(TCP)
- 面向无连接的Socket通信协议(UDP)
- 基于TCP的通信过程:
- Socket通信的步骤
- 建立服务端ServerSocket和客户端Socket
- 打开连接到Socket的输出输入流
- 按照协议进行读写操作
- 关闭相对应的资源
- 服务器端
- 创建ServerSocket对象,绑定监听端口
- 通过accept()方法监听客户端请求
- 连接建立后,通过输入流读取客户端发送的请求信息
- 通过输出流向客户端发送乡音信息
- 关闭相关资源
- 客户端
- 创建Socket对象,指明需要连接的服务器的地址和端口号
- 连接建立后,通过输出流想服务器端发送请求信息
- 通过输入流获取服务器响应的信息
- 关闭响应资源
- Socket通信的步骤