IO流:
IO流的简单概述
使用完io流需要释放资源!!!
IO流的分类:
一般视频或者图片使用字符流,txt文本文件等,使用字节流
字节流:
字节流基类:
字节流写数据:
FileOutputStream:
步骤:
写数据三种方式:
示例:
import java.io.FileOutputStream;
import java.io.IOException;
public class Test01 {
public static void main(String[] args) throws IOException {
//没有此文件自动创建,有此文件会覆盖原文件
FileOutputStream fos=new FileOutputStream("fos.txt");
fos.write(97);
fos.write(57);
/*
也可以使用getBytes方法直接将字符串转换为字节数组写入
String a="abcd";
byte[] bytes = a.getBytes(StandardCharsets.UTF_8);
fos.write(bytes);
*/
//释放资源
fos.close();
}
}
写数据是按照ASCLL码来写的
写入换行和空格:
FileInputStream:
常用方法:
示例:
一次读取一个字节:
import java.io.FileInputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("fos.txt");
int read = fis.read();
System.out.println(read);
System.out.println((char)read);
int read1 = fis.read();
System.out.println(read1);
System.out.println((char)read1);
fis.close();
}
}
在read()读到最后时,读取到的时-1。
使用循环读取文件:
import java.io.FileInputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("fos.txt");
int read;
while ((read=fis.read())!=-1) {
System.out.print((char)read);
}
fis.close();
}
}
案例:读取数据在控制台输出
文本文件:
public class Test {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("fos.txt");
//设置读取的空间
byte b[]=new byte[1024];
//使用循环结构,读取数据
while (fis.read(b)!=-1){
System.out.print(new String(b));
}
fis.close();
}
}
输出结果:
字节缓冲流:
字节缓冲流的概述
在构造方法时,不是具体文件路径,是因为字节缓冲流仅仅提供缓冲区,真正读写数据还得靠字节流对象来操作。
在源码中,字节缓冲流创建对象时,可以看到默认有个初始值为8192,代表默认定义的缓冲空间
BufferedInputStream:
示例:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("fos.txt"));
byte b[]=new byte[1024];
while (bis.read(b)!=-1){
System.out.print(new String(b,0,b.length));
}
bis.close();
}
}
BufferedOutputStream
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
//true 代表追加写入
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("fos.txt",true));
bos.write("hello".getBytes());
bos.close();
}
}