1、什么是IO流
IO流就是程序的输出流和输入流,I是输入流,O是输出流。对于程序来说,从程序外获取到信息过程为输入,如从文件读取信息到程序;从程序中把信息存在到程序外的过程为输出,如从程序中把信息存储到文件中。
2、IO流的分类
按流向分类:输出流(OutputStream)、输入流(InputStream)
按处理数据单元区分:字节流(OutputStream、InputStream)、字符流(Writer、Reader)
字节流是8位通用字节流,使用byte作为传输单位;字符流是16位Unicode字节流,使用char作为传输单位
3、FileInputStream介绍
InputStream作为输出流的基类,是一个抽象类,不能直接调用。今天我们主要学习它的子类FileInputStream,FileInputStream主要是为程序提供从文件提取学习到程序中的方法。
链接: FileInputStream帮助文档.
FileInputStream的构造函数有三个,觉得那个使用的发便就使用就可以了
FileInputStream类的方法倒是不多,也就几个而已
特别需要注意的是read方法,read方法有三个:
read()方法是一个字节一个字节地从文件中读取数据的
read(byte[] b)是一个字节数组一个字节数据的从文件中读取数据的
read(byte[] b,int off,int )是一个字节数组一个字节数据的从文件中读取数据的,off]为数据开始获取数据的下标,len为获取到数据的长度
4、FileOutputStream介绍
OutputStream作为输出流的基类,是一个抽象类,不能直接调用。我们今天学习的是OutputStream的子类FileOutputStream,FileOutputStream主要是为程序提供从程序中存储信息到文件的方法。
链接: FileOutputStream帮助文档.
FileOutputStream的构造函数有五个,觉得那个使用的发便就使用就可以了
FileOutputStream的方法也不多:
特别需要注意的是read方法,write方法有三个:
write方法大致的情况对应FileInputStream的read方法
5、编写一个例子
1)使用FileOutputStream把程序中的“Holle IOStream”存在到“E:/zwy/zwy/01.txt”文件中
```java
package com.company;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileIOStreamDemo {
public static void main(String[] args){
String pathName="E:/zwy/zwy/01.txt"; //文件路径
try {
FileOutputStream fileOutputStream=new FileOutputStream(pathName);//实例化FileOutputStream
String str="Hello IOStream"; //创建写入文件的字符串
fileOutputStream.write(str.getBytes());//把字符串转换为byte数组,然后同过write方法写到文件中
fileOutputStream.close(); //关闭输出流
System.out.println(str+"已经写入到"+pathName);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2)使用FileInputStream把文件“E:/zwy/zwy/01.txt”的信息读取到程序中,并打印到控制台。
package com.company;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileIOStreamDemo {
public static void main(String[] args){
String pathName="E:/zwy/zwy/01.txt";
try {
FileInputStream fileInputStream=new FileInputStream(pathName);//创建FileInputStream实例
int len=0;//一次性从文件读到的字节长度
byte[] b=new byte[1024];//把读取到的字节传入到b数组
while ((len=fileInputStream.read(b))!=-1){//-1为文件的结尾
for(int i=0;i<len;i++){
System.out.print((char)b[i]);
}
}
fileInputStream.close();//关闭输入流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}