----------- android培训、java培训、java学习型技术博客、期待与您交流!------------
黑马程序员——39,IO(字节流)
一:FileInputStream和FileOutputStream----》
字节流也分为读取字节流和写入字节流,分别对应着两个基类InputStream(读操作)和OutputStream(写操作)。字节流不需要刷新,直接读取数据和写入数据的。
这里先介绍常见的FileInputStream和FileOutputStream,两者和FileReader和FileWriter的用法是差不多的,也可以配合数组进行传送。
为了简明介绍,直接用复制图片的例子说明。
1,用读取流与源文件关联
2,用写入流与目的地关联
3,定义相关的字节数组(一般是byte数组)
4,调用read方法配合数组读取数据(read方法返回的是在字节数组里存放的读取数据的有效位数),用write方法配合数组写入数据
5,关闭资源
/*
复制图片:
把f盘的8.27.png复制到d盘8.27_31号复制.png
*/
import java.io.*;
class Fuzhi
{
public static void main(String[] args) throws Exception//不要忘记抛出异常
{
//用读取流与源文件关联
FileInputStream fis=new FileInputStream("f:\\8.27.png");
//用写入流与目的地关联
FileOutputStream fos=new FileOutputStream("d:\\8.27_31号复制.png");
//定义字节数组
byte[] by=new byte[1024];
int i=0;
while((i=fis.read(by))!=-1)//复制数据
{
fos.write(by,0,i);
}
//关闭资源
fis.close();
fos.close();
}
public static void sop(Object obj)//打印方法
{
System.out.println(obj);
}
}
二:BufferedInputStream和BufferedOutputStream----》
字节流也有自己的缓冲区技术:BufferedInputStream和BufferedOutputStream,依旧以复制图片的例子说明。
1,用读取流与源文件关联
2,用写入流与目的地关联
3,定义缓冲区,相关联流对象
4,直接调用read读取数据,不需要定义字节数组
5,直接write写入数据
/*
复制图片:
把f盘的8.27.png复制到d盘8.27_31号复制.png
*/
import java.io.*;
class Fuzhi
{
public static void main(String[] args) throws Exception//不要忘记抛出异常
{
//用读取流与源文件关联
FileInputStream fis=new FileInputStream("f:\\8.27.png");
//用写入流与目的地关联
FileOutputStream fos=new FileOutputStream("d:\\8.27_31号复制.png");
//定义缓冲区,相关联流对象
BufferedInputStream buips=new BufferedInputStream(fis);
BufferedOutputStream buops=new BufferedOutputStream(fos);
int i=0;
while((i=buips.read())!=-1)//复制数据
{
buops.write(i);//这里就不需要再定义字节数组来读取了,read方法使用更加方便
}
//关闭资源
buips.close();
buops.close();
}
public static void sop(Object obj)//打印方法
{
System.out.println(obj);
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流!------------