基于(一)是对字符流的操作,本文主要是演示 对于字节流的操作。
/* 复制一个图片
* 思路:
* 1.用字节读取流对象和图片关联。
* 2.用字节写入流对象创建一个图片文件,用于存储获取到的图片数据。
* 3.通过循环读写,完成数据的存储。
* 4.关闭资源。
*
*/
import java.io.*;
class CopyPicture {
publicstaticvoid main(String[] args)
{
FileOutputStream fos =null;
FileInputStream fis = null;
try
{
fos = new FileOutputStream("D:\\IOstream\\2.jpg");
fis = new FileInputStream("C:\\aaa.jpg");
byte [] buf =newbyte [1024];
int len = 0;
while ((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch(IOException e)
{
throw new RuntimeException ("复制文件失败");
}
finally
{
try
{
if(fis!=null)
fis.close();
}
catch(IOException e)
{
throw new RuntimeException ("读取关闭失败");
}
try
{
if(fos!=null)
fos.close();
}
catch(IOException e)
{
throw new RuntimeException ("写入关闭失败");
}
}
}
}
/* 练习:通过缓冲区MP3文件的复制。
* BufferedOutputStream
* BufferedInputStream
*
*/
import java.io.*;
class CopyMp3 {
publicstaticvoid main(String[] args)throws IOException
{
long start =System.currentTimeMillis();
copy1();
long end =System.currentTimeMillis();
System.out.println((end-start)+"毫秒");
}
publicstaticvoid copy1()throws IOException
{
BufferedInputStream bufis =new BufferedInputStream(newFileInputStream("C:\\aaa.mp3"));
BufferedOutputStream bufos =new BufferedOutputStream(new FileOutputStream("D:\\IOstream\\1.mp3"));
int by =0;
while ((by=bufis.read())!=-1)//其实read()方法是 FileInputStream的。
{
bufos.write(by);
}
bufis.close();
bufos.close();
}
}