IO-字节输入流-FileInputStream
java.io
类 FileInputStream
public class FileInputStream extends InputStream
FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。
FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
22-IO-复制图片-CopyPic
package day20.io.p2.copypic;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyPicTest {
private static FileInputStream fis;
private static FileOutputStream fos;
public static void main(String[] args) throws IOException {
copyPic4();
}
public static void copyPic4() throws IOException {
//在字节流缓冲区里建立缓冲数组是可以的,还可以用flush方法了,将缓冲数组的数据刷出去,
//flush方法在缓冲区里是有效的,如果直接操作文件,fos.flush()是没有效果的
fis = new FileInputStream("temp\\0.jpg");
fos = new FileOutputStream("temp\\4.jpg");
BufferedInputStream bufis =new BufferedInputStream(fis);
BufferedOutputStream bufos =new BufferedOutputStream(fos);
byte[] byt = new byte[1024];
while((bufis.read(byt))!=-1){
bufos.write(byt);
bufos.flush();
}
bufos.close();
bufis.close();
}
/*
* copyPic3()该方法不可用,效率太低。
*/
public static void copyPic3() throws IOException {
fis = new FileInputStream("temp\\0.jpg");
fos = new FileOutputStream("temp\\3.jpg");
int by = 0;
while((by = fis.read())!=-1){
fos.write(by);}
//磁盘的隧道在同一处不停的运行可能会坏道。
}
public static void copyPic2() throws IOException {
fis = new FileInputStream("temp\\0.jpg");
fos = new FileOutputStream("temp\\2.jpg");
BufferedInputStream bufis =new BufferedInputStream(fis);
BufferedOutputStream bufos =new BufferedOutputStream(fos);
int by = 0;
while((by = bufis.read())!=-1){
bufos.write(by);
}
bufos.close();
bufis.close();
}
/*
* 复制一个图片
* 1.既有读又有写,
* 2.还是非文本数据
* 既有图片又有文字,用字节流
*/
public static void copyPic1() throws IOException {
// 1.明确数据源与数据目的
fis = new FileInputStream("temp\\0.jpg");
fos = new FileOutputStream("temp\\1.jpg");
//2.自定义缓冲区
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){
fos.write(buf,0,len);
}
fos.close();
fis.close();
}
}原文:http://pengya123.blog.51cto.com/8467424/1792354