必威体育Betway必威体育官网
当前位置:首页 > IT技术

FileInputStream与FileOutputStream

时间:2019-07-28 06:41:13来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

fileinputstream

输入与输出

  我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界。比如,我们编写的程序想读取一个文本文件,又或者我们想将程序中的某些数据写入到一个文件中,这时我们就要使用输入与输出。

输入:输入是一个从外界进入到程序的方向,通常我们需要"读取"外界的数据时,使用输入。所有输入是用来读取数据的。

输出:  输出是一个从程序发送到外界的方向,通常我们需要"写出"数据到外界时,使用输出。所以输出是用来写出数据的。

节点流与处理流

  按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。

节点流:可以从或向一个特定的地方(节点)读写数据。

处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。

处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的连接。

通常节点流也称为低级流。

通常处理流也称为高级流或过滤流。

IS和OS常用方法

InputStream是所有字节输入流的父类,其定义了基础的读取方法,常用的方法如下:

 int read()

读取一个字节,以int形式返回,该int值的"低八位"有效,若返回值为-1则表示EOF

 int read(byte[] d)

尝试最多读取给定数组的length 个字节并存入该数组,返回值为实际读取到的字节量。

    IS和OS常用方法

  outputstream是所有字节输出流的父类,其定义了基础的写出方法,常用的方法如下:

void write(int d)

写出一个字节,写出是给定的int的"低八位"

void writer(byte[] d)

将给定的字节数组中的所有字节全部写出

文件流

FileOutputStream是文件的字节输出流,我们使用该流可以以字节为单位将数据写出文件。

构造方法:

  FileOutputStream(File file):

创建一个向指定File对象表示的文件中写出数据的文件输出流。

FileOutputStream(String filename):

创建一个向具有指定名称的文件中写出数据的文件输出流。

这里需要注意,若指定的文件已经包含内容,那么当使用FOS对其写入数据时,会将该文件中原有数据全部清除。

测试构建FOS对象写文件

  //创建文件字节输出流

FileOutputStream fos=new FileOutputStream("fos.dat");

//写出一组字节

fos.write("helloworld".getBytes());

fos.close();

创建FOS对象(追加模式)

通过上一节的构造方法创建的FOS对文件进行写操作时会覆盖文件中原有数据。若想在文件的原有数据之后追加新数据则需要以下构造方法创建FOS

 构造方法:

  FileOutputStream(File file,boolean APPend)

创建一个向指定File对象表示的文件中写出数据的文件输出流。

FileOutputStream(String filename,boolean append)

创建一个向具有指定名称的文件中写出数据的文件输出流。

以上两个构造方法中,第二个参数若为true,那么通过该FOS写出的数据都是在文件末尾追加的。

//创建文件字节输出流

FileOutputStream fos=new FileOutputStream(new File("fos.dat"),true);

//写出一组字节

fos.write("helloworld".getBytes());

fos.close();

创建FIS对象

  fileinputstream是文件的字节输入流,我们使用该流可以以字节为单位从文件中读取数据。

FileInputStream有两个常用的构造方法:

FileInputStream(File file)

  创建一个从指定File对象表示的文件中读取数据的文件输入流。

FileInputStream(String name)

  创建用于读取给定的文件系统中的路径名name所指定的文件的文件输入流

FileInputStream fis=new FileInputStream("raf.dat");

int d=-1;

while((d=fis.read())!=-1){

 System.out.print((char)d+" ");

}

fis.close();

read()和write(int d)方法

实现文件复制

  FileInputStream fis=new FileInputStream("fos.dat");

FileOutputStream fos=new FileOutputStream("fos_copy1.dat");

int d=-1;

while((d=fis.read())!=-1){

fos.write(d);

}

System.out.println("复制完毕!");

fis.close();

fos.close();

read(byte[] d)和write(byte[] d)方法

FileInputStream也支持批量读取字节数据的方法:

int read(byte[] b)

从此输入流中将最多b.length个字节的数据读入到字节数组b中

FileOutputStream也支持批量写出字节数据的方法:

void write(byte[] d)

将b.length个字节从指定byte数组写入此文件输出流中。

void write(byte[] d,int offset,int len)

将指定byte数组中从偏移量off开始的len个字节写入此文件输出流。

实现文件复制

FileInputStream fis=new FileInputStream("fos.dat");

FileOutputStream fos=new FileOutputStream("fos_copy2.dat");

int len=-1;

byte[] buf=new byte[32];

while((len=fis.read(buf))!=-1){

fos.write(buf,0,len);

}

System.out.println("复制完毕!")

fis.close();

fos.close();

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读