目录
一、数据流概念
1.输入输出的概念
2.流的概念
3.流的操作
二、常用的流分类
三、文件输入输出流
1.FileReader和FileWriter
2.FileInputStream和FileOutStream
四、复制文件
一、数据流概念
1.输入输出的概念
输入输出技术用于处理设备之间的数据传输,指的是程序和外部设备或者其他计算机进行数据交换的过程,比如读/写文件、网络通信等。将外部数据读取到内存中称为输入,将内存数据输出到磁盘、光盘中称为输出。
2.流的概念
Java程序中,对于数据的输出输入操作以“流”的方式进行。java.io包下提供了各种“流”类接口,用于获取不同种类的数据,并通过标准的方法输入或输出数据。
3.流的操作
import java.io.FileInputStream;
import java.io.IOException;public class FileInputStreamTest {public static void main(String[] args) {// 确定源String path = "hello.txt";FileInputStream fis = null;try {// 打开流fis = new FileInputStream(path);// 操作流int res = 0;while ((res = fis.read()) != -1) {System.out.println((char) res);// 转换类型为char}} catch (IOException e) {e.printStackTrace();} finally {try {// 关闭流fis.close();} catch (IOException e) {e.printStackTrace();}}}
}
二、常用的流分类
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象父类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutStream | FileReader | FileWriter |
访问数值 | ByteArrayInputStream | ByteArrayOutStream | CharArrayReader | CharArrayWriter |
访问管道 | PipedInputStream | PipedOutStream | PipedReader | PipedWriter |
访问字符串 | StringReader | StringWriter | ||
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
转换流 | InputStreamReader | OutputStreamWriter | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
装饰流 | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
打印流 | PrintStream | PrintWriter | ||
数据过滤流 | DataInputStream | DataOutputStream |
InputStream和Reader是所有输入流的基类,OutputStream和Writer是所有输出六的基类。InputStream和OutputStream是字节流的抽象父类,以字节为单位进行I/O操作,Reader和Writer是字符流的抽象父类,以字符为单位进行I/O操作。
三、文件输入输出流
1.FileReader和FileWriter
FileReader和FileWriter分别继承自Reader和Writer,以字符为的那位广泛用于文件操作的节点流。FileReader类用于从文本读数据,每次度一个字符或者一个字符数组;FileWriter类用于从文本文件写数据,每次写入一个字符、一个数组或者一个字符串。
2.FileInputStream和FileOutStream
FileInputStream和FileOutStream分别继承自InputStream和FileOutStream,以字节为单位广泛用于文件操作的节点流。FileInputStream类用于从文件读取数据,FileOutStream类用于将数据写入文件
四、复制文件
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Copy {public static void main(String[] args) {FileInputStream fis = null;FileOutputStream fos = null;try {// 打开流fis = new FileInputStream("hello.txt");//路径fos = new FileOutputStream("hello1.txt");byte[] bytes = new byte[10];// 操作流while (fis.read(bytes) != -1) {fos.write(bytes);fos.flush();}System.out.println("复制完成!");} catch (Exception e) {e.printStackTrace();} finally {try {if (null != fos)// 关闭流fos.close();} catch (IOException e) {e.printStackTrace();}try {if (null != fis)fis.close();} catch (IOException e) {e.printStackTrace();}}}
}