简介

FileInputStream和FileOutputStream都是用来处理二进制数据源磁盘文件的流的。 他们分别派生自顶层抽象类InputStream和OutputStream

FileInputStream

aaarticlea/png;base64,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" alt="" />

作用:用于从文件系统中的某个文件中获得输入字节,处理二进制原始字节文件,如exe  图片等。
1、构造关联 的文件可以使用 String 描述,也可以使用File ,FileDescriptor 对象表示 2、read 是可能阻塞当前线程的。当read等其他操作的字节数大于此对象直接可用(available)的字节数时会阻塞。
3、read到文件末尾返回 -1 构造函数
FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(FileDescriptor fdObj)
通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。
FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 API
int available()
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
若返回5,那么调用 read(b, 0, 5) 是不会阻塞线程的,因为已经明确有5个字节的数据直接可用。 void close()
关闭此文件输入流并释放与此流有关的所有系统资源。 int read()
从此输入流中读取一个数据字节。
int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
int read(byte[] b, int off, int len)
从此输入流中将最多 len 个字节的数据读入 byte 数组b中。
off表示第一个字节数据存储在b[off]中。第二个存储在b[off+1]...
len是最多读取的字节数 long skip(long n)
从输入流中跳过并丢弃 n 个字节的数据。
protected void finalize()
确保在不再引用文件输入流时调用其 close 方法。
FileChannel getChannel()
返回与此文件输入流有关的唯一 FileChannel 对象。
FileDescriptor getFD()
返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此 FileInputStream 使用。

FileOutputStream

aaarticlea/png;base64,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" alt="" />

作用:用于将字节(二进制)数据写入关联的文件中。

1、构造时关联的文件可以使用 String 描述路径,或者使用File ,FileDescripter类对象。

2、append 为true 时,表示要对文件进行追加输入操作,则将字节写入文件末尾处,而不是写入文件开始处。

3、如果文件不存在,则会先创建文件。表示追加,append为true时,也是如此。当append为false,且文件已经存在,则是本次读写覆盖文件原来的内容。

构造函数
FileOutputStream(File file)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append) FileOutputStream(FileDescriptor fdObj)
创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。
FileOutputStream(String name)
创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append)
创建一个向具有指定 name 的文件中写入数据的输出文件流。 API
void close()
关闭此文件输出流并释放与此流有关的所有系统资源。
void flush()
     刷新输出的数据在内存中的缓冲,强制数据写出到底层文件中。执行close时,会自动flush。
void write(byte[] b)
将 b.length 个字节从指定 byte 数组写入此文件输出流中。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 数据流向: b ---->FileOutputStream关联的文件
void write(int b)
将指定字节写入此文件输出流。 protected void finalize()
清理到文件的连接,并确保在不再引用此文件输出流时调用此流的 close 方法。
FileChannel getChannel()
返回与此文件输出流有关的唯一 FileChannel 对象。
FileDescriptor getFD()
返回与此流有关的文件描述符。

代码实例

下面是一个通过FileInputStream   和 FileOutputStream 拷贝exe可执行文件的例子。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; public class Main
{ public static void main(String[] args)
{ InputStream input = null ;
OutputStream out = null; try {
input = new FileInputStream(new File("D:\\2.exe"));
out = new FileOutputStream(new File("D:\\2_copy.exe"),false); byte[] buff = new byte[1024];
int len; //保存read实际读取的字节数。 while(-1!=(len = input.read(buff, 0, buff.length)))
{
out.write(buff, 0, len);
} out.flush(); //强制刷新输出流,使缓冲数据写入硬盘 System.out.println("copy success!"); } catch (FileNotFoundException e) { e.printStackTrace();
System.out.println("文件打开失败");
} catch (IOException e) { e.printStackTrace();
System.out.println("文件读写失败");
} finally
{ if(null!=out)
{
try {
out.close();
out = null;
} catch (IOException e) { System.out.println("输出文件关闭失败");
}
} if(input!=null)
{
try {
input.close();
input = null;
} catch (IOException e) { System.out.println("输入文件关闭失败");
}
} } } }

FileInputStream 和 FileOutputStream的更多相关文章

  1. 【Java IO】FileInputStream 和 FileOutputStream

    class FileInputStream extends  InputStream implements Closeable

  2. 2016-9-6 批量给文件名的前面加上“igeek_高薪就业” 2、 利用FileInputStream和FileOutputStream复制文件

    在此只列出典型题目,有的题目扫一眼就有代码的不去浪费时间了,想要完整题目的评论留邮箱,看到就发.持续更新中... 1.批量给文件名的前面加上“igeek_高薪就业” package com.work; ...

  3. java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr

    BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWri ...

  4. 深入解析FileInputStream和FileOutputStream

    http://swiftlet.net/archives/1363 FileInputStream和FileOutputStream类属于字节类,可以操作任意类型的文件.在数据流的处理过程中,有两种情 ...

  5. FileInputStream和FileOutputStream详解

    一.引子 文件,作为常见的数据源.关于操作文件的字节流就是 FileInputStream & FileOutputStream.它们是Basic IO字节流中重要的实现类.二.FileInp ...

  6. [八]JavaIO之FileInputStream 与 FileOutputStream

    接下来介绍 FileInputStream  和 FileOutputStream 现在看名字应该可以看得出来: 他就是从一个文件中读取数据 或者将数据写入到一个文件中 FileInputStream ...

  7. java io系列07之 FileInputStream和FileOutputStream

    本章介绍FileInputStream 和 FileOutputStream 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_07.html File ...

  8. java-IO流-字节流-概述及分类、FileInputStream、FileOutputStream、available()方法、定义小数组、BufferedInputStream、BufferedOutputStream、flush和close方法的区别、流的标准处理异常代码

    1.IO流概述及其分类 * 1.概念      * IO流用来处理设备之间的数据传输      * Java对数据的操作是通过流的方式      * Java用于操作流的类都在IO包中      *  ...

  9. FileInputstream,FileOutputstream 和 byteArrayInputStream,byteArrayOutputStream

    你知道FileInputstream和FileOutputstream吗?FileInputstream,FileOutputstream分别是由抽象类Inputstream和Outputstream ...

随机推荐

  1. EJB的魅惑来源

      有人发帖子问学习EJB有个屁用啊?看完下面一个简单的介绍,也许你对EJB很感兴趣,它的优点极具魅惑力. 一.EJB是基于组件的开发. 利用Enterprise JavaBean,你就能像搭积木一样 ...

  2. DWZ主从表界面唯一性验证(后台验证)(三)

    之前的博客介绍了前台自写js来验证主动表的唯一性,除了前台的验证,我也学习了后台的一些判断. 再次介绍一下背景需求: 利用DWZ的主从表结构批量添加课程信息,在提交表单后,触发Action事件 1.是 ...

  3. datatable删除一行方法

    t.row($(e).parents('tr')[0]).remove().draw(false); t为定义的datatable对象,row里面传入当前行的DOM元素.

  4. vue获取dom元素注意问题

    mounted(){ setTimeout(()=>{ this.contentToggle(); },1000) }, methods:{ contentToggle(){ console.l ...

  5. C语言的结构体

    举例,一个结构体的定义如下: typedef struct _foo { ]; int age; int sex; } foo; 对齐 如果直接对上面的结构体作sizeof()运算: printf( ...

  6. Android开发学习笔记-自定义组合控件的过程

    自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...

  7. JS貪食蛇網頁代碼

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...

  8. Bootstrap 各种进度条详解

    一:默认的进度条 创建一个基本的进度条的步骤如下: 添加一个带有 class .progress 的 <div>. 接着,在上面的 <div> 内,添加一个带有 class . ...

  9. python操作mysql数据库实现增删改查

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  10. js九九乘法表的应用

    <html> <head> <meta charset=utf-8" /> <title>js九九乘法表</title> < ...