JAVA基本IO流框架
字节流整体可分为带缓冲区的流和不带缓冲区的流 可分为逐字节复制的流和逐块复制的流 (块其实就是指byte) 常用的一共有4种复制方式!
示例:复制源文件文本数据到目标文本中 以下列出主要的代码
//逐字节复制 //定义file类分别指向源文件和目标文件 File src_file1 = new File("from//Test.java"); File des_file1 = new File("To//Test.java"); //从传入的中的文件对象中获得读取字节或输出字节 FileInputStream fis = new FileInputStream(src_file); FileOutputStream fos = new FileOutputStream(des_file); //调用read()方法,将文本内容逐字节读取到read中 int read; while ((read = fis.read()) != -1) {//调用write方法逐字节输出到目标文件中 fos.write(read); } //关闭流 fis.close(); fos.close(); //逐块复制 //定义file类分别指向源文件和目标文件 File src_file1 = new File("from//Test.java"); File des_file1 = new File("To//Test.java"); //从传入的中的文件对象中获得读取字节或输出字节 FileInputStream fis = new FileInputStream(src_file); FileOutputStream fos = new FileOutputStream(des_file); //定义一个能容纳1024个字节的数据byte数组来接收要读取的文本数据 byte[] bs = new byte[1024]; //定义read表示接收的字节长度 int read; //从输入流中将最多 1024个字节的数据读入一个 byte 数组中 while ((read = fis.read(bs)) != -1) {//将 byte 数组中从0 开始的 read 个字节写入此目标文件中 fos.write(bs, 0, read); } //关闭流 fis.close(); fos.close(); //带缓冲区的逐字节复制 //定义file类分别指向源文件和目标文件 File src_file1 = new File("from//Test.java"); File des_file1 = new File("To//Test.java"); //从传入的中的文件对象中获得读取字节或输出字节 FileInputStream fis = new FileInputStream(src_file); FileOutputStream fos = new FileOutputStream(des_file); //包装流,把操作文件的流增加缓冲区的功能(直接覆盖了文件流) BufferedInputStream bis = new BufferedInputStream(fis);; BufferedOutputStream bos = new BufferedOutputStream(fos); //用read逐字节接收数据 int read; //调用read()方法逐字节读取数据到缓冲区中 while ((read = bis.read()) != -1) {//write方法将缓冲区中的数据逐字节输出到文本文件中 bos.write(read); } //关闭流,释放系统资源 bis.close(); bos.close(); //带缓冲区的逐块复制 //定义file类分别指向源文件和目标文件 File src_file1 = new File("from//Test.java"); File des_file1 = new File("To//Test.java"); //从传入的中的文件对象中获得读取字节或输出字节 FileInputStream fis = new FileInputStream(src_file); FileOutputStream fos = new FileOutputStream(des_file); //包装流,把操作文件的流增加缓冲区的功能(直接覆盖了文件流) BufferedInputStream bis = new BufferedInputStream(fis);; BufferedOutputStream bos = new BufferedOutputStream(fos); //定义一个能容纳1M个字节的数据byte数组来接收要读取的文本数据 byte[] bs = new byte[1024 * 1024]; //len表示要写入的字节数。 int len = 0; //调用read()方法逐字块读取byte数组到缓冲区中(每次读1M) while ((len = bis.read(bs, 0, 1024)) != -1) {//将指定 byte 数组中从0 开始的 len 个字节写入此缓冲的输出流 bos.write(bs, 0, len); } //关闭流释放操作系统资源,包含flush的功能 //bos.flush()将缓冲区的数据冲入到输出文本中,只有output需要冲出 bis.close(); bos.close();