1.流的分类
按方向分类:输出流、输入流
按单位分类:字节流、字符流
按功能分类:
- 节点流:具有实际传输数据的读写功能
- 过滤流:在节点流的基础之上增强功能;
1.文件字节输入流 FileInputStream
public int read(){}; //读取字节,每次读取1个
public int read(byte[] b){};//读取字节,每次读取一个,放入字节数组吧b中;
public int read(byte[] b, int off, int len){}; //读取字节,放入数组b中,从第off个开始放,长度为len
2.文件字节输出流 FileOutputStream
public int write(){};
public int write(byte[] b){};
public int write(byte[] b, int off, int len){};
使用read()方法读取单个字节。
package com.yundait.Demo03;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
//1.创建FileInputStream,并制定文件路径
FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Documents\\aaa.txt");
//2.读取文件
//fis.read();
int data;
while ((data = fis.read())!= -1){
System.out.print((char)data);
}
fis.close();
System.out.println();
System.out.println("执行完毕");
}
}
2.使用read(byte [ ] b)方法读取多个字节放入一个数组中进行处理
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
//1.创建FileInputStream,并制定文件路径
FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Documents\\aaa.txt");
//2.读取文件,一次读取多个字节
byte[] bytes = new byte[3];//创建一个数组,指定数组大小为3;
int i = fis.read(bytes);//以字节为单位读取文件,并把读取到的内容存储在数组中
System.out.println(new String(bytes)); //将数组转换为字符串并打印
int i1 = fis.read(bytes);
System.out.println(new String(bytes)); //将数组转换为字符串并打印
int i2 = fis.read(bytes);
System.out.println(new String(bytes,0,i2));
System.out.println(i2);
//3关闭
fis.close();//关闭输入流
System.out.println();
System.out.println("执行完毕");
}
}
3.可以把以上一次读取多个字节的代码使用while循环进行优化
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
//1.创建FileInputStream,并制定文件路径
FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Documents\\aaa.txt");
//2.读取文件,一次读取多个字节
byte[] bytes = new byte[3];
int count;
while ((count=fis.read(bytes)) != -1){
System.out.println(new String(bytes,0,count));
}
//3关闭
fis.close();//关闭输入流
System.out.println();
System.out.println("执行完毕");
}
}
4.文件字节输出流 FileOutputStream使用
public class FileOutputStreamDemo01 {
public static void main(String[] args) throws Exception {
//1创建文件字节输出流对象
FileOutputStream fos = new FileOutputStream("C:\\Users\\Public\\Documents\\bbb.txt",true);
//2写入文件
// fos.write(97);
// fos.write(98);
// fos.write('a');
// fos.write('b');
String string = "HelloWorld";
fos.write(string.getBytes());
//3关闭
fos.close();
System.out.println("写入执行完毕");
}
}