IO流:输入输出流
流可以分为以下两类:
1)字节流
2)字符流
其中,字节流可以读取任何一切文件(yyds)
,字节流又可以分为两类:
1)字节输入流(InputStream 包含 FileInputStream 和 BufferedInputStream)
2)字节输出流
流的输入输出是如何界定?
一般来说,以程序为参照物,数据流入程序-----输入流,反之,数据流出程序----输出流
举个例子,比如,键盘----->程序(输入流),文本文件----->程序(输入流)
那么数据输入程序的过程?或者以生活中的水龙头来举例,更深刻的明白输入流,比如:水厂的水流入你家,这就是一个很形象的输入流的例子,水厂的水-----你家,具体过程如下:
1)第一步,有水厂存在(水厂---数据)
2)第二步,铺设管道(FileInputStream、BufferedInputStream)
3)第三步,打开水龙头
4)第四步,关闭水龙头
字节输入流FileInputStream在程序和文件之间创建连接
字节输入流在程序和文件中创建连接的方式主要有以下三种,其中最常见的是第一种和第三种:
FileInputStream(File file):通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。
FileInputStream(FileDescriptor fdObj):使用文件描述符 fdObj创建 FileInputStream ,该文件描述符表示与文件系统中实际文件的现有连接。
FileInputStream(String name):通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的路径名 name命名。
实现代码
import java.io.FileInputStream;
/**
* IO流:输入输出流
* 流分类:字节流 字符流
* 字节流:
* 字节输入流
* 输入流以程序为参考点,数据流入程序----输入流
* 数据流出程序----输出流
* InputStream(字节输入流)
* FileInputStream
* BufferedInputStream
* 字节输出流
*/
public class IODemo1 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
try {
//1.在文件和程序之间铺设管道
FileInputStream fis = new FileInputStream("F:\\20210803.txt");
//2.开水龙头
int ch = 0;
while((ch = fis.read())!=-1){
System.out.print((char)ch);
}
// for(int ch=0;(ch = fis.read())!=-1;){
// System.out.println("ch="+(char)ch);
// }
//3.关闭水龙头(关闭流)
fis.close();
/* File file = new File("F:\\20210803.txt");
if (file.exists() && file.length() > 0) {
FileInputStream fis = new FileInputStream(file);
}*/
} catch (Exception e) {
e.printStackTrace();
}
}
}