1.字节输出流
所有字节输出流的父类是java.io.OutputStream,它是以字节为单位的输出。
1.1 FileOutputStream
写入文件数据的字节输出流
package fileoutstream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
//传入文件路径创建流对象
File file1 = new File("F:\\IDEA\\code\\test\\1.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file1);
//传入文件路径的File对象创建流对象
FileOutputStream fileOutputStream1 = new FileOutputStream("F:\\IDEA\\code\\test\\2.txt");
/*
一次写入一个数据:
public void write(int b) throws IOException
传入你个字节数据,把字节数据写入文件
*/
fileOutputStream.write(1);
/*
一次写入一个字节数组:
存入一个字节数组,把字节数组中的数据全部文件
public void write(byte b[])
存在一个字节数组,把字节数组中的off索引开始len个元素写入文件
public void write(byte b[],int off,int len)
*/
byte[] bytes = "abc".getBytes();
fileOutputStream1.write(bytes);
fileOutputStream1.write(bytes,0,2);
fileOutputStream1.close();
fileOutputStream.close();
}
}
1.2 文件续写
上一章节在创建对象时,就对文件进行了清空,当要求不动原来数据,继续写入新的数据时,用文件续写完成
package fileoutstream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
/*
文件续写:不清空文件的内容,在原来基础上继续添加数据
FileOutStream(String name,boolean append)第二个参数代表是否续写
FileOutStream(File file,boolean append)第二个参数代表是否续写
*/
FileOutputStream fileOutputStream = new FileOutputStream("F:\\IDEA\\code\\test\\1.txt", true);
File file = new File("F:\\IDEA\\code\\test\\1.txt");
FileOutputStream fileOutputStream1 = new FileOutputStream(file, true);
fileOutputStream.write(65);
byte[] bytes = "ABCD".getBytes();
fileOutputStream1.write(bytes);
fileOutputStream.close();
fileOutputStream1.close();
}
}
2. 文件复制
package fileoutstream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo03 {
public static void main(String[] args) throws IOException {
/*
要求定义一个方法,该方法能实现文件复制
文件的复制实质上就是一个循环的读写
*/
//创建新文件,接收复制结果
File file = new File("F:\\IDEA\\code\\test\\3.txt");
boolean newFile = file.createNewFile();
//创建输入输出对象
FileInputStream fileInputStream = new FileInputStream("F:\\IDEA\\code\\test\\1.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
//调用复制方法,进行复制
copy(fileInputStream,fileOutputStream);
fileInputStream.close();
fileOutputStream.close();
}
public static void copy(FileInputStream input, FileOutputStream output) throws IOException {
byte[] bytes = new byte[4];
int len;
while ((len=input.read(bytes))!=-1){
output.write(bytes,0,len);
}
}
}