打印流 :一般是打印到控制台,可以进行控制打印的地方。
管道流 :PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。
序列流 :可以将流合并,可以用于数据的切割和合并。
对象序列化流:对象序列化,把对象直接转换成二进制,写入介质中。使用对象流需要实现Serializable接口,否则会报错。IO流(字节流)
字节流:
输出流:OutputStream(抽象):
|--FileOutputStream:
构造方法:文件可以不存在,会自动创建
FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流。
FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append) :创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
写入:
void write(int n):写入一个字节;
void write(byte[] byteArray):写入一个字节数组;
void write(byte[] byteArray ,int off,int len):写入一个字节数组的一部分;
输入流:InputStream(抽象):
|--FileInputStream:
构造方法:(文件必须存在,否则抛出异常)
FileInputStream(String fileName):
FileInputStream(File file):
读取:
int read():一次读取一个字节;
int read(byte[] b):一次读取一个字节数组,返回:读取的字节数;
字符流:
输出流:Writer:
输入流:Reader:
例子:
public class Demo {
public static void main(String[] args) throws IOException {
// 1.构造一个BufferedOutputStream
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("bufferdOutput.txt"));
//分开写
/*
FileOutputStream fileOut = new FileOutputStream("aa.txt");
BufferedOutputStream bufOut = new BufferedOutputStream(fileOut);
*/
//2.写入文件
out.write("你好Java".getBytes());
out.write("Hello".getBytes());
out.write("Worlddddddddd".getBytes());
//3.刷新缓冲区
// out.flush();
//4.释放资源
out.close();//先flush(),再close()
}
}
四:字节流四种方式复制MP4并测试效率
--基本流:
1.FileInputStream:
FileOutputStream:
1).一次读、写一个字节; method1()--> 58250 毫秒
2).一次读、写一个字节数组; method2()--> 105 毫秒!
--缓冲流:
2.BufferedInputStream:
BufferedOutputStream:
3).一次读、写一个字节 method3()--> 968 毫秒!
4).一次读、写一个字节数组: method4()--> 70 毫秒!
五:转换流--输出流:
字节流:
输出流:OutputStream
输入流:InputStream
字符流:
输出流:Writer
|-OutputStreamWriter:将字节输出流转换为字符输出流;
输入流:Reader
|--InputStreamReader:将字节流的输入流,转换为字符的输入流;
构造方法:这也是转换流的作用:可以将"字节流"转换为"字符流"
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out,String charsetName)
写入的方法:
public void write(int c):写入一个字符;
public void write(char[] cbuf):写入一个字符数组
public void write(char[] cbuf,int off,int len):写入一个字符数组的一部分
public void write(String str):写入一个字符串
public void write(String str,int off,int len):写入一个字符串的一部分;