IO流 FileInputStream、FileOutputStream

9 篇文章 0 订阅

定义:IO流是用来处理设备之间的数据传输 的。JAVA中对数据的操作都是通过流的方式,而用于操作流的对象都在IO包中。

分类:按照数据流向,分为输入流和输出流。输入流用来读入数据,输出流用来写入数据

         按照数据类型分为字节流和字符流,其中字节流可以用来读写所有类型的文件,比如音频,视频,文本文件等。但是字符           流只能用来读写文本文件。但一般我们优先使用字节流。

使用限定:如果数据所在文件通过windows自带的记事本打开能读懂里边的内容,就用字符流,其他都用字节流。

IO流中的抽象基类:

字节流:InputStream,OutputStream

字符流:Reader,Writer

由这四个类派生出的子类名称都是以其父类名作为子类名的后缀。

FileOutputStream

构造方法:FileOutputStream(File file)  参数是一个文件,创建一个指定File对象表示的文件中写入数据的文     件输出流

                  FileOutputStream(String name)参数是一个字符串。创建一个向具有指定名称的文件中写入数据                                              的输出文件流

                FileOutputStream(File file,boolean append):第二个参数表示是否要追加写入,比如要给已经有数据的文件中增加                    数据,就把第二个参数设定为true。

                FileOutputStream(String name):同上,只不过是关联文件的时候是通过文件名而不是文件。

当我们在创建文件输出流时,关联文件时如果没有这个文件,此流回自动为我们创建这个文件

例如:

package FileStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;



public class one{
    public static void main(String[] args) throws IOException {
        FileOutputStream fos=new FileOutputStream(new File("hello.txt"));
        byte []bytes="hello world".getBytes();
        fos.write(bytes); 
        System.out.println("Hello");
      //FileOutputStream允许字节数据和int类型的构建
        FileOutputStream fos2=new FileOutputStream("a.txt");
        fos2.write(98);
        fos2.write('a');
        fos2.write(100);
        System.out.println("a");
        fos.close();
        fos2.close();
    }
}
在创建的过程都做了哪些事:

1、调用系统资源创建a.txt文件

2、创建一个fos对象

3、把fos对象指向这个文件

注意:最后一定要关闭文件(close())

作用:通知系统释放关于管理a.txt 文件的资源;让IO流对象变成垃圾,等待垃圾回收器对其回收。

Write方法(FileOutputStream):

public void write(int b):写一个字节  如果超过一个字节 就砍掉前面的字节
public void write(byte[] b):写一个字节数组
public void write(byte[] b,int off,int len):写一个字节数组的一部分,len为起始位置

需要注意,如果是GBK编码 一个汉字占两个字节,如果是UTF-8编码 一个汉字占3个字节

FileInputStream(文件写入字符流):

常用方法:

int read():一次读取一个字节,如果没有数据就返回-1.

int read(byte []b):一次读取一个字节数组,返回的int类型的值表示读取到的字节的个数,如果没有值了就返回-1

我们首先要认为的创建一个字符缓冲区,用来接收我们读取到的文件。

import java.io.FileInputStream;
import java.io.IOException;

public class MyTest2 {
    public static void main(String[] args) throws IOException{
        FileInputStream fis = new FileInputStream("a.txt");
        //这个字节数组充当就是数据缓冲区
        byte[] by=new byte[1024*8];
        fis.read(by);//一次读取一个字节数组
        for(byte b:by){
            System.out.println(b);
        }
        //释放资源
        fis.close();
    }
}



BufferedOutputStream:高效的字符输出流,比FileOutputStream更加高效。

自己包含一个缓冲区。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值