IO-字节输入流-FileInputStream

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO-字节输入流-FileInputStream相关的知识,希望对你有一定的参考价值。

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();
    }
 
}



以上是关于IO-字节输入流-FileInputStream的主要内容,如果未能解决你的问题,请参考以下文章

javaio流之字节输入流:java.io.InputStream类及子类java.io.FileInputStream

ava.io.InputStream & java.io.FileInputStream

IO——FileInputStream

Java-IO流

InputStream字节输入流

BufferedInputStream:字节缓冲输入流