【Java开发指南 | 第二十一篇】Java流之文件

读者可订阅专栏:Java开发指南 |【CSDN@秋说】

在这里插入图片描述

Java流

Java 中的流(Stream)是 Java 8 引入的用于处理数据集合的一种新方式。它是一种声明式编程风格,可以帮助我们处理集合、数组等数据结构,而无需明确地编写迭代或操作步骤。流提供了许多功能,包括过滤、映射、规约、分组等,可以大大简化代码,使其更易读且易于并行化。

Java流之文件

FileInputStream

FileInputStream 是用于从文件中读取数据的流类。在 Java 中,我们可以通过 new 关键字来创建该流的实例。

创建该流对象有两种方法。

1、我们可以使用文件名作为字符串参数来创建 FileInputStream 对象,用于读取指定的文件:

InputStream inputStream = new FileInputStream("C:/java/hello");

2、也可以使用 File 对象来创建 FileInputStream 对象。在这种情况下,首先需要使用 File 类创建一个文件对象,然后通过这个对象来创建输入流:

File file = new File("C:/java/hello");
InputStream inputStream = new FileInputStream(file);

创建 InputStream 对象后,可以读取数据流,进行文件内容的处理或其他流操作。

示例:

import java.io.*;

public class Ice {
    public static void main(String[] args) {
        try {
            // 创建文件输入流
            InputStream a = new FileInputStream("C:/Users/86177/Desktop/1.txt");
            
            // InputStreamReader 将字节流 a(来自 FileInputStream)转换为字符流
            InputStreamReader b = new InputStreamReader(a, "UTF-8");
            BufferedReader c = new BufferedReader(b);

            // 读取 txt 文件每一行并输出
            String line;
            while ((line = c.readLine()) != null)
                System.out.println(line);

            // 关闭流
            c.close();
            b.close();
            a.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java 的 BufferedReader 类用于从字符输入流中读取文本并缓冲字符,以提供更高效的读取。它可以一次读取一行或多行文本,并提供了一些便捷的方法来读取字符、字符数组和字符串。

在这里插入图片描述

FileOutputStream

FileOutputStream 类用于创建文件并向文件中写入数据(覆盖原文件的所有内容)。

如果在打开输出流进行写入之前,目标文件不存在,那么该流会创建该文件。

创建 FileOutputStream 对象有两种方法:

1、使用字符串类型的文件名来创建一个输出流对象:

OutputStream outputStream = new FileOutputStream("C:/java/hello");

2、也可以使用一个文件对象来创建一个输出流以写入文件。首先需要使用 File() 方法创建一个文件对象:

File file = new File("C:/java/hello"); 
OutputStream outputStream = new FileOutputStream(file);

创建 OutputStream 对象后,就可以将数据写入流中,或进行其他流操作。

示例:

import java.io.*;

public class Ice {
    public static void main(String[] args) {
        try {
            // 创建文件输出流
            OutputStream a = new FileOutputStream("C:/Users/86177/Desktop/2.txt");
            
            // 写入内容到文件中
            String content1 = "你说,粼粼碧波倒映我的落寞。";
            //将字符串 content 使用 UTF-8 编码转换成一个字节数组
            byte[] content2 = content1.getBytes("UTF-8");
            a.write(content2);
            
            // 关闭输出流
            a.close();
            System.out.println("文件写入成功!");
        } catch(IOException e) {
            e.printStackTrace();
            System.out.println("文件写入失败!");
        }
    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋说

感谢打赏,祝你平安喜乐。

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

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

打赏作者

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

抵扣说明:

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

余额充值