首先电脑上面文件,在进行读取和存储的时候,都是以流的形式进行操作
io流的参照物是内存
I input 输入
O output 输出
缓冲其实就是为了提高读取和存储的效率
计算机通过CPU读取硬盘的数据,在Java中可以加上缓冲的概念
输入流:磁盘=>内存(java代码)
1.字节输入流
2.字符输入流
输出流:内存=>磁盘
1.字节输出流
2.字符输出流
字节输入流:
将磁盘上面文件的内容读取到Java代码中
1.创建一个File对象
File file =new File("d:/aaa/1.txt");
2.创建字节输入流的核心类
FileInputStream fis=new FileInputStream(file);
3.创建加速缓冲功能
BufferedInputStream bis = new BufferedInputStream(fis);
4.创建缓冲数组
byte[] buf =new byte[4*1024];
5.读取
int length;
while ((length = bis.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}
6.关闭
bis.close();
fis.close();
字符输入流:
1.创建一个file
File file =new File("d:/aaa/1.txt");
2.创建字符输入的流的核心对象
FileReader fr=new FileReader(file);
3.加缓冲效果
BufferedReader br=new BufferedReader(fr);
4.准备缓冲数组
char[] ch=new char[4];
5.从磁盘中把数据读取到缓冲数组中
int lenght;
while ((lenght=br.read(ch))!=-1){
System.out.println(new String(ch,0,lenght));
}
6.关闭,先关闭缓冲流再关闭输出流
br.close();
fr.close();
读取方法 read方法
public int read(byte[] b) 将文件中的数据 读取到缓冲数组中
返回的类型数据是int类型,返回的结果是读入缓冲区的总字节数。
如果被读文件没有更多的数据,说明文件的结尾已经到达,此时返回值为 -1 。
其中参数 b 是读取数据的缓冲区
System.out.println(new String(buf,0,length)); //
bytes - 要解码为字符的字节
offset - 要解码的第一个字节的索引
length - 要解码的字节数
需要抛出异常
从该输入流读取最多b.length字节的数据到字节数组。 此方法将阻塞,直到某些输入可用。
重写:
read在 InputStream类
参数
b - 读取数据的缓冲区。
结果
读入缓冲区的总字节数,如果没有更多的数据,因为文件的结尾已经到达, -1 。
字节输出流
1.创建一个文件对象
File file = new File("d:/aaa/1.txt");
2.创建核心的字节输出流对象
FileOutputStream fos=new FileOutputStream(file);
3.创建一个加速缓冲功能
BufferedOutputStream bos=new BufferedOutputStream(fos);
4.声明一个字符串
String str ="dsasf";
5.写入磁盘中
bos.write(1);
//以ask码值写入
//bos.write(str.getBytes());
//此方法是吧整个字符串都写进去
//bos.write(str.getBytes(),3,2);
//此时写入sf ,此方法注意不要超出str的长度
6.关闭,先关闭缓冲流再关闭输出流
bos.close();
fos.close();
字符输出流:
1.创建一个file
File file =new File("c:/aaa/1.txt");
2.创建字符输出流的核心对象
FileWriter fw =new FileWriter(file);
3.加缓冲效果
BufferedWriter bw=new BufferedWriter(fw);
4.声明一个字符串
String str ="adsgdf";
5.写入
bw.write(str);
//写入一个字符串
bw.write(str,2,3);
//写入字符串的一部分
bw.write(97);
//写入一个字符
bw.write(str.toCharArray());
//写入一个字符组
bw.write(str.toCharArray(),2,3);
//写入字符组的一部分
6.关闭
bw.close();
fw.close();