1.字节流:
基类:OutputStream、IntputStream
当我们对操作图片数据的时候会用到字节流。字节流操作使用的是字节流数组也就是byte[] b
在OutputStream类中有其直接子类 FileOutputStream
2读取字节流操作:
(1)创建一个字节流文件
(2)创建一个z字节数组 byte[] buf=new byte[1024],用while循环来实现读取字节转化为String,进行打印;
(3)关闭流资源close();
复制一个图片字节流文件;
具体步骤
(1)用字节读取流对象和图片关联
(2)用字节写入流对象创建一个图片文件,用于存储取到的图片数据
(3)通过循环读写,完成数据的存储
(4)关闭资源
代码实例
class CopyPic
{
public static void main(String[] args)
{
FileOutputStream fos=null;
FileInputStream fis=null;
fis=new FileInputStream("c:\\20076211191982.jpg");//用字节流创建一个图片文件,
fos=new FileOutputStream("c:\\2002.jpg");//复制后出现的图片
byte[] buf=new byte[1024] ;
int len=0;
while((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fis.close();
}
}
3.字节流的复制,通过缓冲区 :
复制Mp3文件的例子
class CopyMp3
{
public static void main(String[] args) throws IOException
{
long start=System.currentTimeMillis();//计算开始时间
copy1() ;
long end=System.currentTimeMillis();//计算结束时间
System.out.println((end-start)+"毫秒!");
}
public static void copy1() throws IOException
{
BufferedInputStream bufis=
new BufferedInputStream(new FileInputStream("c:\\1.mp3"));//用字节流创建一个MP3文件,用于存储获取的音乐数据
BufferedOutputStream bufos=
new BufferedOutputStream(new FileOutputStream("c:\\2.mp3"));//复制后的文件(副本)
// byte[] buf=byte[1024];
int by=0;
while((by=bufis.read())!=-1)
{
bufos.write(by);
}
bufos.close();
bufis.close();
}
}
注意:在我写该段代码时候把c:\\1.mp3和c:\\2.mp3"位置放反了导致复制失败找了好久才找出来。
4,流转化关系:
OutputStreamWriter 将字符流——>字节流
IntputStreamReader 将字节流——>字符流
5。总结:
源:键盘录入
目的:控制台
在如何正确使用流操作上首选我们要明确以下的流操作基本规律
(1)明确源和目的:
源:-->输入流 IntputStream、Reader
目的:—>输出流 OutputStream、Writer
(2)操作流的数据是否为文本文件
是:则用字符流
不是:则用字节流
(3)体系明确后,然后明确使用哪个对象
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
自我学习感悟,从IO基本操作到OutputStream、IntputStream的更加复杂的操作,开始有些晕了,只好把视频重新看了几遍,才理解其中的操作类似与前面的流操作,是在前面操作的基础上,一个综合体,内容的揉合,使其学起来复杂。