一、FileOutputStream类
FileOutputStream类继承了OutputStream。可以用来将数据(内存中的)写入到文件中
常用的方式:write(byte[] b)、write(byte[] b,int off,int len)、和close()
FileOutputStream类写入数据到文件中:
public class FileOutputStreamDemo {
// 需求:将数据写入到文件中
// 创建存储数据的文件
public static void main(String[] args) throws Exception {
File file = new File("d:/file.text"); //创建文件
// 默认为false:会清空原有数据。true可以在原来的内容后面追加内容
FileOutputStream fos = new FileOutputStream(file, true);
// getBytes()将 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
// windows中换行加\r\n
byte[] b = "\r\nabcd".getBytes();
fos.write(b);
fos.close();
}
}
二、FileInputStream类
FileInputStream类继承了InputStream。可以将文件系统中的数据输入到字节流中
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
File file = new File("c:\\file.txt");
//创建一个字节输入流对象,必须明确数据源,其实就是创建字节读取流和数据源相关联。
FileInputStream fis = new FileInputStream(file);
//读取数据。使用 read();一次读一个字节。
三、文件的复制*
public static void main(String[] args) throws Exception {
// file被复制的文件,一定存在,否则抛异常
File file = new File("E:/Mysql/mysql-5.7.24-winx64.zip");
// target(目标)需要复制到哪个地方,定以名字
File target = new File("E:/Mysql/mysql-5.7.24-winx64(copy).zip");
FileInputStream fis = new FileInputStream(file);
double fileSize = (double) file.length(); // 记录被复制的文件长度
FileOutputStream fos = new FileOutputStream(target);
byte[] b = new byte[8 * 8 * 8 * 1024];
int len;
double finish = 0;// 记录复制了多少
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
finish += (double) (b.length / fileSize);
System.out.println("正在读取" + (finish * 100) + "%");
}
fis.close();
fos.close();
}