java中FileInputStream和OutputStream解析

FileInputStream和FileOutputStream分别表示读写文件数据流,前者是将文件数据读取到内存中,后者表示将内存中的数据写入到文件中。

1.FileInputStream

FileInputStream从文件系统中的文件中获得输入的字节数据。主要的构造方法有以下三种:
FileInputStream(File file)
用File对象来构造

FileInputStream(String pathName)
用文件路径名来构造

FileInputStream(FileDescriptor fdObj)
以文件描述符类对象来构造

主要的方法和InputStream类似,点击这里查看。其他方法如下所示:
FileChannel getChannel()
获得该文件输入流唯一的文件通道对象

FileDescriptor getFD()
获得被文件输入流使用的文件的文件描述符对象

2.FileOutputStream

FileOutputStream是一个向文件(File)中或者文件描述符(FileDescriptor)中写入数据的输出流。文件是否可用或者可创建取决于底层平台。在某些平台中,允许文件在某一个时刻仅仅被一个文件输出流进行写操作。在这种情况下,用已经被使用的文件来构造文件输出流将会发生错误。文件输出流是用来写原始字节数据的,例如图片数据;如果要写入字符数据,可以考虑使用FileWriter类。如果该文件找不到,则会自动创建该文件,前提是允许创建,否则将会出现文件找不到错误。如果该文件找到,但是是文件夹而不是常规文件,则也会发生文件找不到错误,如果该文件不允许打开,也会发生错误。

主要的构造方法有以下几种:
FileOutputStream(File file)
用File对象来构造,写文件时,从头开始写

FileOutputStream(File file,boolean append)
用File对象来构造,如果第二个参数为true,则表示以追加的方式写文件,从尾部开始写操作。第二个参数默认为false。

FileOutputStream(FileDescriptor fdObj)
用文件描述符来构造

FileOutputStream(String path)
用文件路径名来构造,写文件时,从头开始写

FileOutputStream(String path,boolean append)
用文件路径名来构造,如果第二个参数为true,写文件时,从尾部开始写,以追加的形式写文件。第二个参数默认为false。

常用的方法和OutputStream类似,请点击这里查看。其他方法如下所示:
FileChannel getChannel()
获得该文件输入流唯一的文件通道对象

FileDescriptor getFD()
获得被文件输入流使用的文件的文件描述符对象

下面是某图像读写操作的java代码:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileTest {
    /*
     * 先读取图片数据,然后将该图片写到其他路径中
     */
    public static void main(String[] args) throws IOException{
        String image = "G:\\test.jpg";                           //源文件路径
        String goalPath = "E:\\follow.jpg";                      //目标文件路径

        FileInputStream fis = new FileInputStream(image);        //初始化输入流
        FileOutputStream fos = new FileOutputStream(goalPath);

        int len=fis.available();                                 //流中字节数
        System.out.println("图片大小为:"+len+"个字节");

        int ch=0;                                                //一个字节一个字节读
        while((ch = fis.read()) != -1){
            fos.write(ch);                                       //一个字节一个字节写
        }
    }
}

原始文件截图:
图1

程序运行结果截图:
运行结果
可以看出,读取的文件的大小和文件属性中查看的是一致的,都是9811字节

写入的图片文件截图:
图2

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值