【JavaSE】day09_节点流和高级流
1.FileOutputStream
1)java.io.FileOutputStream
* 文件的字节输出流,用于向文件中写出字节。是一个低级流。
2)默认创建的FOS是覆盖写操作。
* 该覆盖操作是在写内容前将原文件所有数据清除,然后重新写入新内容。
3)还支持一个重载的构造方法,第二个参数传入一个boolean值,若该值为true,则是追加写操作,
* 即:通过该流写出的数据会在当前文件的末尾写入。 而不是将原来的数据都清除。
具体实现见代码:
package day02;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* java.io.FileOutputStream
* 文件的字节输出流,用于向文件中写出字节。是一个低级流。
*
*/
public class FOSDemo1 {
public static void main(String[] args) throws IOException {
/*
* 默认创建的FOS是覆盖写操作。
* 该覆盖操作是在写内容前将原文件所有数据清除,
* 然后重新写入新内容。
*/
//FileOutputStream fos = new FileOutputStream("fos.txt");
/*
* 还支持一个重载的构造方法,第二个参数传入一个
* boolean值,若该值为true,则是追加写操作,
* 即:通过该流写出的数据会在当前文件的末尾写入。
* 而不是将原来的数据都清除。
*/
FileOutputStream fos = new FileOutputStream("fos.txt",true);
String str = "一步两步,一步两步像爪牙,像魔鬼的步伐";
byte[] data = str.getBytes();
fos.write(data);
/*
* 流使用完毕也要关闭,释放资源!
*/
fos.close();
}
}
2.FileInputStream
1)FileInputStream ---- 低级流,用于读取文件数据的流。
代码:
package day02;
import java.io.FileInputStream;
import java.io.IOException;
/**
* FileInputStream
* 低级流,用于读取文件数据的流
*
*/
public class FISDemo1 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("fos.txt");
byte[] data = new byte[200];
int len = fis.read(data);
String str = new String(data,0,len);
System.out.println(str);
fis.close();
}
}
3.BufferedOutputStream与BufferedInputStream
具体细节见代码:
package day02;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 缓冲流写出数据注意事项:
*/
public class BOSDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("bos.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
String str = "我爱北京天安门";
byte[] data = str.getBytes();
bos.write(data);
/*
* void flush()
* 该方法会强制将缓冲区中的数据一次性写出,不管缓冲区
* 是否已经装满。频繁调用flush()方法会提高写出次数从
* 而降低写出效率,但是会保证写出的及时性。
*/
bos.flush();
/*
* 当关闭缓冲流的时候,它会首先调用flush()将剩余在缓冲区
* 中的数据先写出,然后再将它处理的流关闭后,才将自己关闭。
*/
bos.close();
}
}