21.文件读写:使用IO流的步骤

1.使用输入流的步骤

1.1.使用输入流的4个基本步骤

  • 步骤1:设定输入流的源。(创建file对象或路径)
  • 步骤2:创建指向源的输入流。(创建指向file对象|文件路径的流对象)
  • 步骤3:让输入流读取源中的数据。(调用read方法)
  • 步骤4:关闭输入流。(调用close方法)

1.2.具体编码(以FileInputStream为例)

1~2步的实现:可以使用下列构造方法

FileInputStream(String name);

使用给定的文件名name创建一个FileInputStream流。其中name指向的文件与源代码文件所在的目录是并列关系

FileInputStream(File file);

使用File对象创建一个输入流。

说明:上述两种方法中的参数name和file指定的文件称为输入流的源,输入流的作用是打开了一个到达文件的通道

用法如下:

try{
 FileInputStream in = new FileInputStream("hello.txt"); 
}
catch(IOException e){
 System.out.println("File read error:"+e);
}

(第二种构造方法类似于上述)

try{
    File file=new File("hello.txt");
    FileInputStream in=new FileInputStream(file);
}catch(IOException e){
    System.out.println("File read error:"+e);
}

3.让输入流读取源中的数据:通过使用read方法实现

int read();

该方法从源中读取单个字节的数据,返回0~225之间的一个整数,如果未读出字节就返回-1,每调用一次,读取游标向后移动一位。

int read(byte b[]);

该方法从源中试图读取b.length个字节到字节数组b中,返回实际的读取字节数目。如果到达文件的末尾则返回-1.

int read(byte b[] ,int off,int len);

该方法从源中试图读取len个字节到字节数组b中,并返回实际读取的字节数目。参数off指定从字节数组的某个位置开始存放读取的数据。如果到达文件的末尾,则返回-1.

4.关闭流

close();

此方法为关闭流的方法。

注意:FileInputStream按顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取源中其余的内容直到源的末尾或被关闭。

1.3具体实例

/**
 * 学习使用文件字节输入流的步骤
 */
public static void useDemo() throws IOException {
    //1.创建文件源对象
    File file = new File("麻子.txt");
    //2.创建文件字节输入流对象并指向文件源对象
    InputStream fileStream = new FileInputStream(file);
    //3.让输入流读取源中的数据
    int n;
    while ((n=fileStream.read())!=-1){
        System.out.print((char)n);
    }
    //4.读取完毕,调用close方法关闭流,释放系统资源
    fileStream.close();
}

在这里插入图片描述

2.输出流使用步骤

2.1.使用输出流的基本步骤

  • 步骤1:给出输出流的目的地。(创建file对象)
  • 步骤2:创建指向目的地的输出流。(创建输出流的对象指向file对象)
  • 步骤3:让输出流把数据写入到目的地。(调用write方法)
  • 步骤4:关闭输出流。(调用close方法)

2.2.具体编码(以FileOutputStram为例)

1.给出输出流的目的地

一般目的地为File对象或String对象指定路径的文件。

2.创建指向目的地的输出流

我们可以使用FileOutputStream类具有刷新功能的构造方法创建指向文件的输出流:

FileOutputStream(String name);

此方法使用给定的文件名name创建FileOutputStream流。其中name指向的文件与源代码文件所在的目录是并列关系

FileOutputStream(File file);

此方法使用File对象创建FileOutputStream流。

说明:上述两种方法中的参数name和file指定的文件称为输出流的目的地,输出流的作用是打开了一个到达文件的通道

3.使用输出流写字节

方法:

void write(int n);

该方法向目的地写入单个字节。

void write(byte b[]);

该方法向目的地写入一个字节数组。

void write(byte b[],int off,int len);

该方法给定字节数组中起始于偏移量off处取len个字节写到目的地。

4.关闭输出流。

void close();

注意:FileOutputStream流顺序地写入文件,只要不关闭流,每次调用write方法就顺序地向目的地写入内容,直到流被关闭

2.3 具体实例

public static void useDemo() throws IOException {
    //创建目的地
    File file = new File("四郎.txt");
    //创建指向目的地的输出流
    OutputStream outputStream = new FileOutputStream(file);
    //准备要写的数据
    String str = "大家好,我是四郎,我喜欢麻子";
    //调用write方法进行写入
    outputStream.write(str.getBytes(StandardCharsets.UTF_8));
    //调用close方法关闭流
    outputStream.close();
}

在这里插入图片描述

代码地址:
Java基础学习/src/main/java/Progress/exa21 · 严家豆/Study - 码云 - 开源中国 (gitee.com)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值