文章目录
前言
这篇文章主要介绍流的概念和作用,Io流的体系及分类,流的使用等知识点。
一、流的概念和作用
1.1 流的概念
Java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流.
1.2 流的作用
为数据源和目的地建立一个输送通道。
二、Io流的体系及分类
1、File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
2、InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。
3、OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。
4、Reader(文件格式操作):抽象类,基于字符的输入操作。
5、Writer(文件格式操作):抽象类,基于字符的输出操作。
6、RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。
字符流和字节流
1、字节流:数据流中最小的数据单元是字节
2、字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
输入流和输出流
1、输入流:程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道(文件—>程序)
2、输出流:程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道(程序—>文件)。
三、流的使用
1.1、File类
基本方法的使用
public static void FiletestDemo() {
System.out.println(File.separator); //名称分隔符 \(windows) /(linux 等)
System.out.println(File.pathSeparator); // 路径分隔符 ;
//相对路径构建的两种方式
System.out.println("相对路径!!!!!!!!");
String path = "E:\\BaiduNetdiskDownload";
String name = "a.txt";
//第一种方式:
File file = new File(path, name);
//第二种方式
File file1 = new File(new File(path), name);
//绝对路径的构建方式
File file2 = new File("E:\\BaiduNetdiskDownload\\a.txt");
}
遍历文件
/**
* 递归遍历文件
*/
public static void printName(File src) {
if (null == src || !src.exists()) {
return;
}
System.out.println(src.getAbsolutePath());
if (src.isDirectory()) { //文件夹
for (File sub : src.listFiles()) {
printName(sub);
}
}
}
1.2、字节流 (可以处理一切文本,视频,音频等)
输入流:InputStream FileInputStream ByteInputStream
输出流:OutputStream FileOutputStream ByteOutputStream
/**
* 字节输入流
*/
public class FileStreamDemo {
public static void main(String[] args) throws IOException {
FileUtil.copyDir(new File("D:\\a"), new File("D:/d"));
}
/**
* 读取文件
*/
public static void readFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
byte[] bytes = new byte[1024];
int len = 0;
StringBuffer sb = new StringBuffer();
while (-1 != (len = is.read(bytes))) {
String str = new String(bytes, 0, len);
sb.append(str);
}
System.out.println(sb.