java--字节流-(二)
一、字节流
- 字节流主要是操作byte(字节)的类型数据:
- 字节输出流:OutputStream
- 字节输入流:InputStream
二、OutputStream常用方法
- void flush() throws IOException:清空缓冲区
- abstract void close() throws IOException:关闭输出流
- void write(int c) throws IOException:将一个字节写到输出流中。
- void write(byte[] b) throws IOException:将一个byte数组写出。
- void write(byte[] b,int off,int len) throws IOException:将字节数组从off位置开始,长度为len的字节写入到输出流中。
- 以其子类FileOutputStream来实例化OutputStream对象
- FileOutputStream(File/String file) throws FileNotFoundException创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
- FileOutputStream(File/String file, boolean append) throws FileNotFoundException创建一个向指定 File 对象表示的文件中写入数据的文件输出流
OutputStream实例
package io;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class OutputStreamDemo {
public static void main(String[] args) throws IOException {
//1.找到流的目标
String filename = "stream.txt";
//2. 创建输出流的管道,并连接上目标l,os就是输出管道
OutputStream os = new FileOutputStream(filename,true);
//3. 输出操作
os.write('\n');
for (int i =65; i < 91; i++) {
os.write(i);
}
String data = "cditcast";//程序提供的数据
byte[] b= data.getBytes();//得到字节类型的数据
os.write(b);
os.write('\n');
os.write(b,2,2);//得到 "cditcast"的 "it"
//4. 关闭操作
os.close();//字节流没有使用缓冲区,
}
}
三、InputStream常用方法
- int available() throws IOException:文件大小
- abstract void close() throws IOException:关闭流
- int read() throws IOException:从输入流中读取单个字节,返回该字节。
- int read(byte[] b) throws IOException:从输入流中读取b.length个字节存储在字节数组b中,返回实际读取的字节数。
- 直到read(byte[] b)方法返回-1表示输入流的结束。
- 以其子类FileInputStream来实例化InputStream对象
- FileInputStream(File/String file) throws FileNotFoundException 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
InputStream实例
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamDemo {
public static void main(String[] args) throws IOException {
//1,找到 数据源
File src = new File("day21.txt");
//2. 创建输入流的管道,并和源连接上
InputStream is = new FileInputStream(src);
//3. 读取操作
/*for (int i = 0; i < 100; i++) {
System.out.println((char)is.read());
}*/
//存储读入数据的缓冲区
byte[] buff = new byte[1024];//定义一个1024个字节的缓冲区
int len = 0;//表示这一次,读了多个各字节, 若len == -1表示读完了
while((len= is.read(buff)) != -1){
//String(byte[] bytes, int offset, int length) 构造一个新的 String。
//去缓冲区获取数据
String data = new String(buff,0,len);
System.out.println(data);
System.out.println("========================================");
}
//4.关闭操作
is.close();
}
}