忘记的知识点:FileOutputStream(File file,boolean append),拼接输出
流是单方向的,数据只能以从头到尾的顺序流动一次。输入的时候
int i ;while((i = (s.read())) != -1){ read() 读不到数据输出-1}
一、概念
I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io这个包里面。
二、什么是流
通过“流”的形式允许java程序使用相同的方式来访问不同的输入/输出源。stream是从起(source)到接收的(sink)的有序数据。我们这里把输入/输出源对比成“水桶”,那么流就是“管道”,这个“管道”的粗细、单向性等属性也就是区分了不同“流”的特性。
tips:流是单方向的,数据只能以从头到尾的顺序流动一次。
三、流的分类
1、根据传输处理的单位:字节流 字符流
2、根据流的方向:输入流 输出流
字符输入流:Reader(抽象父类无法实例化)
高效字符输入流:BufferedReader
实例化使用BufferedReader(new FileReader ( new File( "路径" ) ) )
字符输出流:Writer(抽象父类无法实例化)
高效字符输出流:BufferedWriter
实例化使用BufferedWriter(new FileWriter ( new File( "路径" ) ) )
字节输入流:InputStream(抽象父类无法实例化)
高效字节输入流:BufferedIputStream
实例化使用BufferedIputStream(new FileInputStream ( new File( "路径" ) ) )
字节输出流:OutputStream(抽象父类无法实例化)
高效字节输出流:BufferedOutputStream
实例化使用BufferedOutputStream(new FileOutputStream ( new File( "路径" ) ) )
package cn.tedu;
import java.io.*;
/**本类用于复习IO流*/
public class ReviewIO {
public static void main(String[] args) {
// method1();//测试字符输入流
// method2();//测试字符输出流
// method3();//测试字节输入流
method4();//测试字节输入流
}
private static void method4() {
BufferedOutputStream bo = null;
try{
bo = new BufferedOutputStream(new FileOutputStream("D:\\a\\1.txt",true));
bo.write(1);
bo.write(1);
bo.write(1);
}catch(Exception e){
System.out.println("输出失败");
}finally {
try {
bo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void method3() {
BufferedInputStream bi = null;
try{
bi = new BufferedInputStream(new FileInputStream("D:\\a\\1.txt"));
int j;
while ((j =(bi.read())) != -1){
System.out.println(j);
}
}catch(Exception e){
System.out.println("输出失败");
}finally {
try {
bi.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void method2() {
BufferedWriter bW = null;
try{
bW = new BufferedWriter(new FileWriter("d:\\a\\2.txt",true));
bW.write("你");
bW.write("好");
bW.write("吗");
}catch (Exception e){
System.out.println("输出失败");
}finally {
try {
bW.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void method1(){
BufferedReader bR = null;
try {
bR = new BufferedReader(new FileReader("d:\\a\\1.txt"));
int i ;
while((i = bR.read())!= -1){
System.out.println(i);
}
}catch (Exception e){
System.out.println("输入失败");
}finally {
try {
bR.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
四、案例
package cn.tedu;
import java.io.*;
/**本类用于IO流文件复制案例*/
public class ReviewIO02 {
public static void main(String[] args) {
method();
}
private static void method() {
BufferedInputStream input = null;
BufferedOutputStream output = null;
try{
input = new BufferedInputStream(new FileInputStream("D:\\a\\m.jpg"));
output = new BufferedOutputStream(new FileOutputStream("D:\\a\\b\\m.jpg",true));
int i;
while ((i = (input.read())) != -1){
output.write(i);
}
System.out.println("复制成功");
}catch(Exception e){
System.out.println("复制失败");
}finally {
try {
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}