目录
IO流概述和分类
IO流概述:
IO:输入/输出(Input/Output)
流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
IO流就是用来处理设备间数据传输问题的
IO流分类:
按照数据的流向:
输入流:读数据 输出流:写数据
按照数据类型分类:
字节流:字节流入流;字节输出流
字符流:字符输入流;字符输出流
如果数据通过Windows自带的记事本打开,还可以读得懂里面的内容,就使用字符流,否则使用字节流,不知道该使用那种类型的流,就使用字节流。
字节流写数据
字节流抽象基类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输入流的所有类的超类
子类名特点:子类名称都是以其父类名作为子类吗的后缀
使用字节输出流写数据的步骤
创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
调用字节输出流对象的写数据方法
释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo01 {
public static void main(String[] args) throws IOException {
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("E:\\Java_Code01\\fos.txt");
//void write(int b):将指定的字节写入此文件输出流
fos.write(96);
fos.write(97);
fos.write(98);
//释放资源
fos.close();
}
}
字节流写数据的方法
方法名 | 说明 |
void write(int b) | 将指定的字节写入此文件输出流(一写一个字节数据) |
void write(byte[] b) | 将b.length字节从指定的字节数组写入此文件输出流(一次写一个字节数组数据) |
void write(byte[] b,int off,int len) | 将len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流(一次写一个字节数组的部分数据) |
字节流读数据
一次读一个字节数据
FileInputStream:从文件系统中的文件获取输入字节
FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名
使用字节输入流读数据的步骤:
1.创建字节输入流对象
2.调用字节输入流对象的读数据方法
3.释放资源
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("E:\\Java_Code01\\fos.txt");
//调用字节输入流读数据的方法 int read():从该输入流读取一个字节的数据
int read = fis.read();
System.out.println(read);
System.out.println((char)read);
//释放资源
fis.close();
}
}
一次读一个字节数组的数据
mport java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("E:\\Java_Code01\\fos.txt");
//调用字节输入流对象的读取方法
byte[] bys = new byte[1024];//1024及其整数倍
int len;
while((len = fis.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
//释放资源
fis.close();
}
}