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

IO-字节输入流-FileInputStream的相关文章

【IO流】23 - 字节流 - 字节输出流的缓冲流以及字节输入流的缓冲流BufferedOutputStream&BufferedInputStream

package cn.itcast.demo1; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; /* * 字节输出流的缓冲流 * java.io.BufferedOuputStream 作用: 提高原有输出流的写入效率 * BufferedOuputStream 继承 OutputStream * 方法,写入 write 字节,字节数组 * * 构

【JAVA的 IO流之FileInputStream和FileOutputStream】

java的 IO流即输入输出流,流是一组有顺序的,有起点和终点的字节结合,是对数据传输的总称.即数据在两设备间的传输称为流,流的本质是数据传输. IO流可以分为字节流和字符流.给出相应的IO结构图: 在接下来的一段时间里,将会慢慢介绍各种流的使用,本篇博客先介绍字节流的FileOutputStream和相对应的FileInputStream. 一.FileOutputStream(文件输出流) OutputStream是一个抽象类,抽象类必须通过子类实现.现在要向文件里输出就要用FileOutp

File类的基本操作之InputStream字节输入流

话不多少,我直接把代码贴上来了.有什么问题请给我留言 package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; /** * 字节输出流:OutputStream,整个IO包中字节输出流的最大父类 * 字节输入流:InputStream * * InputStream使用子类FileInputStream.读取 */ public class

BufferedInputStreamTest 带缓存的字节输入流

package IOliu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public cla

字节输入流和字节输出流

字节输入流:InputStream属于抽象类,用其子类FileInputStream进行实例化.(先定义字节数组,实例化输入流对象,读取文件内容到字节数组中,再输出) 第一种方式: package 字节流; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class InputStreamDemo01 { publ

转换流:字节输入流转换成字符输入流 InputStreamReader

/* * 将字节输入流变成字符输入流 类 InputStreamReader * 构造方法: * InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader. 常用方法: 方法摘要 void close() 关闭该流并释放与之关联的所有资源. String getEncoding() 返回此流使用的字符编码的名称. int read() 读取单个字符. int read(char[] cbuf, int offset, int

《三》Java IO 字节输入输出流

那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream)    1.字节输出流:OutputStream ? 1 2 3 public abstract class OutputStream extends Object implements Closeable, Flushable 这个抽象类是表示字节输出流的所有类的超类. 输出流接收输出字节并将其发送到某个

Java 之 字节输入流 [InputStream]

一.字节输入流 java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中. 它定义了字节输入流的基本共性功能方法. 共性方法: public void close() :关闭此输入流并释放与此流相关联的任何系统资源. public abstract int read() : 从输入流读取数据的下一个字节. public int read(byte[] b) : 从输入流中读取一些字节数,并将它们存储到字节数组 b中 . 注意:close 方法,当完成

java 20 - 9 带有缓冲区的字节输出流和字节输入流

由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutputStream 构造方法: BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用. BufferedInputStream(InputStream in, int size) 创建具有指定

字节输入流写文本文件【OutputStream、FileOutputStream】

字节输入流写文本文件 1.OutputStream基类 作用:把内存中的数据输出到文件中. ※OutputStream类的常用方法 方法名称 说明 void write(int c) 写入一个字节数据 void write (byte[] b) 写入数组b的所有字节 void write (byte[]b , int off , int len) 将字节数组从off位置开始,长度为len的字节数据输出到输出流中 void close() 关闭输出流 2.字节输入流OutputStream类 常用