FileOutputStream
1、构造方法
FileOutputStream(File file)
FileOutputStream(String name)
参数为文件路径的字符串或者文件格式都可以
FileOutputStream out = new FileOutputStream("a.txt");
out.close();
创建字节输出流对象了做了几件事情?
a:调用系统资源创建a.txt文件
b:创建了一个out对象
c:把out对象指向这个文件
为什么一定要close()?
a: 通知系统释放关于管理a.txt文件的资源
b: 让Io流对象变成垃圾,等待垃圾回收器对其回收
2、成员方法
(1)write()方法
public void write(int b):写一个字节 超过一个字节 砍掉前面的字节
public void write(byte[] b):写一个字节数组
public void write(byte[] b,int off,int len):写一个字节数组的一部分
写如数据时的换行: windows下的换行符是 \r\n,Linux是\n,Mac是\r
数据的追加写入: 构造方法参数后加true
FileOutputStream out = new FileOutputStream("fos.txt" , true) ;
FileInputputStream
read()方法
int read():一次读取一个字节,如果没有数据返回 -1
int read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
int read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
案例演示:采用多种方式,把D:\a.txt的内容复制到D:\b.txt中
方式1:基本字节流一次读写一个字节
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("D:\\a.txt");
FileOutputStream out = new FileOutputStream("D:\\b.txt");
int len = 0;
while((len=in.read())!=-1){
out.write(len);
out.flush();
}
in.close();
out.close();;
}
}
方式2:基本字节流一次读写一个字节数组
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo3 {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("D:\\a.txt");
FileOutputStream out = new FileOutputStream("D:\\b.txt");
int len = 0;
byte[] bytes = new byte[1024*8];
while((len=in.read(bytes))!=-1){
out.write(bytes,0,len);
out.flush();
}
in.close();
out.close();
}
}