一、数据流概念
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();
}
}
}
}
3.常用的流分类
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();
}
}
}
}