一、流
很多的程序都需要和外界进行数据交换,如从键盘键入数据,从文件存入数据或者网文件写入数据,还有在网络上进行数据的交换。在Java中把这些不同类型的输入源、输出源都抽象为流。
二、数据流
流中的数据成为数据流,用统一的接口表示。
数据流按照照输入输出方向可以分为输出流,输入流。
数据流按照照输入处理数据类型可以分为字节流,字符流。
输入流,输出流是对于程序来说的。
(1)比如说程序需要从外部文件中读取数据那么程序需要使用的就是输入流。输入流只能从外部读取数据。
(2)程序需要向外部文件写数据那么程序需要使用的就是输出流。输出流只能往外部写数据。
字节流,字符流。
(1)字节流处理数据最小单位是一个字节即8位,字符流处理数据的最小单位是一个字符即两个字节(16位)。
(2)字节流处理的数据要广泛些,因为计算机里的硬盘都是以字节的形式存储文件,字符只出现在内存里。
(内存和硬盘的区别)
三、数据流处理文件
我们用数据流来处理文件来熟悉,数据流的操作。
文件作为持久数据的一种存储方式,不会随着程序的结束而消失。比如说我们写了一个记录本的程序,运行程序添加记录,希望程序下次运行的时候数据不会消失,那么我们就可以把数据存储在程序外部文件里。
文件看作是输入源或输出源抽象为流,我们要对文件进行操作先要根据文件创建对应的数据流,通过数据流的读写来达到对文件进行读写的操作。这样做的目的是因为流(数据源)有很多种我们以数据流的方式解决对流(数据源)的读写,就不必深入每一种流(数据源)的读写方式。
写一段代码达到以下效果。
在桌面上建立一个txt的文本文件,往txt的文本文件里写入文字。
public class FileDemo {
public static void main(String[] args) throws IOException {
File file=new File("C:\\Users\\Administrator\\Desktop\\文件.txt");
/*构造函数中是文件的路径 我的路径是在桌面上*/
FileOutputStream fos=new FileOutputStream(file);
/*根据文件对象 file 创建文件输出流对象 fos*/
DataOutputStream dos=new DataOutputStream(fos);
/*根据文件输出流对象 fos 创建数据输出流对象dos*/
String string=new String("创建了一个文件");
for(int i=0;i<string.length();i++){
dos.writeChar(string.charAt(i));
}
dos.flush();
dos.close();
}
}