字节流
- 字节流不仅可以操作文字,同样也可以操作图片等
OutputStream
- 是所有输出字节流的父类,是一个抽象类
- 通常使用的子类为:FileOutputStream
常用方法
写出方法:write()
该方法是这个类的核心方法。有3种重载的形式public void write(int b) throws IOException 一次只写入一个字节 public void write(byte b[], int off, int len) throws IOException 这个方法则写入b字节数组中数据到输出流,从第offset位开始写入len字节。 public void write(byte b[]) throws IOException 这个方法其实是上一个方法的特殊情况,当off=0, len=data.length的时候, 就得到了这个方法
关闭流方法:close()
用于关闭输出流,释放相关的系统资源。关闭之后,该输出流不能再被操作或者重新打开,否则抛出异常。当然,你可以不关闭,但是这不是一个好习惯,时常会出现严重问题。
FileOutputStream
public static void main(String[] args) throws IOException {
//1,创建字节输出流对象。用于操作文件.
FileOutputStream fos = new FileOutputStream("bytedemo.txt");
//2,写数据。直接写入到了目的地中。
fos.write("abcdefg".getBytes());
//3,关闭资源
fos.close();
}
InputStream
- 是所有输入字节流的父类,是一个抽象类
- 通常使用的子类为:FileInputStream
常用方法
读入方法:read()
该方法是这个类的核心方法。有3种重载的形式public abstract int read() throws IOException 该方法读取下一个字节,一次只读取一个字节 返回一个0-255之间的int类型整数。如果到达流的末端,返回-1. public int read(byte b[]) throws IOException 试图读入多个字节,存入字节数组b,返回实际读入的字节数。 如果到达流尾部,没有字节可读,返回-1; public int read(byte[] b,int off,int len) throws IOException 这个方法跟上一个功能类似,除了读入的数据存储到b数组是从off开始。 len是试图读入的字节数,返回的是实际读入的字节数。 如果到达流尾部,没有字节可读,返回-1;
关闭流方法:close()
关闭当前流,释放与该流相关的资源,防止资源泄露。在带资源的try语句中将被自动调用。关闭流之后还试图读取字节,会出现IOException异常。public void close() throws IOException
FileInputStream
public static void main(String[] args) throws IOException {
//1,创建一个读取流对象。和指定文件关联。 里面含有ab两个字符
FileInputStream fis = new FileInputStream("bytedemo.txt");
//一次读取一个字节。
/* int ch = fis.read();
System.out.println(ch);
ch = fis.read();
System.out.println(ch);
ch = fis.read();
System.out.println(ch);*/
//使用循环读取
/* int ch = 0;
while((ch=fis.read())!=-1){
System.out.println((char)ch);
}*/
//建议使用这种读取数据的方式
/* byte[] buf = new byte[1024]; //定义缓冲区 用于提高效率
int len = 0;//用于接收数据的长度
while((len=fis.read(buf))!=-1){
System.out.println(new String(buf,0,len));
}*/
//关闭流
fis.close();
}
练习 复制MP3
现将文件内容读取到程序中 然后在将数据从程序中写入到硬盘
public static void copy_1() throws IOException {
FileInputStream fis = new FileInputStream("c:\\0.mp3");
FileOutputStream fos = new FileOutputStream("c:\\1.mp3");
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1){ //注意 危险动作
fos.write(buf,0,len);
}
fos.close();
fis.close();
}