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

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

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("文件写入失败!");
        }
    }
}
目录
相关文章
|
1月前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
|
1月前
|
Java
利用GraalVM将java文件变成exe可执行文件
这篇文章简明地介绍了如何使用GraalVM将一个简单的Java程序编译成exe可执行文件,首先通过javac命令编译Java文件生成class文件,然后使用native-image命令将class文件转换成独立的exe文件,并展示了如何运行这个exe文件。
57 0
利用GraalVM将java文件变成exe可执行文件
|
1天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
9 2
|
5天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
13 2
|
13天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
15天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
23 4
|
17天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
17天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
Java
用java搞定时任务,将hashmap里面的值存到文件里面去
本文介绍了如何使用Java的`Timer`和`TimerTask`类创建一个定时任务,将HashMap中的键值对写入到文本文件中,并提供了完整的示例代码。
36 1
用java搞定时任务,将hashmap里面的值存到文件里面去
|
27天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
45 2