- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- public class FileInputStreamDemo {
- public static void main(String[] args) throws IOException {
- copy_1();
- copy_2();
- copy_3();
- }
-
- //使用缓冲区的复制方法.
- public static void copy_3() throws IOException {
- //创建字节输入流对象,读取源文件.
- FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");
- //创建字节输入流缓冲区对象.
- BufferedInputStream bffi=new BufferedInputStream(fi);
-
- //创建字节输出流对象,写入目标文件.
- FileOutputStream fo=new FileOutputStream("d:\\你给我听好_3.mp3");
- //创建字节输出流缓冲区对象.
- BufferedOutputStream bffo=new BufferedOutputStream(fo);
-
- //定义一个整数型变量,用来判断读取结果.
- int ch=0;
- //使用输入流缓冲区对象方法读取源文件数据,如果读取结果不等于-1,即代表读取到数据,进行循环.
- while((ch=bffi.read())!=-1)
- {
- bffo.write(ch); //使用输出流缓冲区对象方法,将读取结果写入输出流缓冲区.
- }
- bffi.close();//循环完成后关闭源文件.
- bffo.close();//循环完成后将输出流缓冲区数据写入目标文件,并关闭目标文件.
- }
- //使用自定义缓冲区的复制方法.直接创建需复制文件同等大小的字节数组,但此方法有安全隐患,不适用大文件.
- public static void copy_2() throws IOException {
- //创建字节输入流对象,读取源文件.
- FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");
- //创建字节输出流对象,写入目标文件.
- FileOutputStream fo=new FileOutputStream("d:\\你给我听好_2.mp3");
- //创建一个跟源文件同等大小的字节数组,用来临时存储从源文件读取的数据.
- byte[] buf=new byte[fi.available()];
- fi.read(buf);//使用输入流对象方法,读取源文件内容并存储到数组.
- fo.write(buf);//使用输出流对象方法,将数组内容写入目标文件.
- fi.close();//关闭源文件.
- fo.close();//关闭目标文件.
- }
- //使用自定义缓冲区的复制方法.创建一个1024字节的数组,循环读取源数据并写入目标文件.
- private static void copy_1() throws IOException {
- //创建字节输入流对象,读取源文件.
- FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");
- //创建字节输出流对象,写入目标文件.
- FileOutputStream fo=new FileOutputStream("d:\\你给我听好_1.mp3");
- //创建一个1024字节的数组,用来临时存储从源文件读取的数据.
- byte[] buf=new byte[1024];
- int len=0;//定义一个整数型变量来存储读取到的字节数.
- while((len=fi.read(buf))!=-1)//使用输入流方法读取若干字节存储到buf数组,如果读取到的字节数不等于-1,即代表读取到数据,进入循环.
- {
- fo.write(buf,0,len);//使用输出流对象方法,将字节数组中,读取到的len个数据写入到目标文件.
- }
- fi.close();//关闭源文件.
- fo.close();//关闭目标文件.
- }
- }
复制代码 |