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(); } }
时间: 2024-12-17 20:02:02