Java文件与IO流操作原理详细分析

Java文件与IO流操作原理详细分析

什么是IO流

Java中的IO流是用来处理输入和输出的流。IO流可以分为两种类型:字节流和字符流。它们之间的区别在于字节流以字节为单位进行操作,而字符流以字符为单位进行操作。不管是哪种类型的流,都分为输入流和输出流。输入流用于从文件中读取数据,输出流用于将数据写入到文件中。在Java IO流中,InputStream和Reader是用来读取数据的核心类,而OutputStream和Writer是用来将数据写入到文件中的核心类。

Java文件操作

在Java中,文件操作是通过File类来实现的。File类提供了很多方法来创建、读取和写入文件。下面是常用的File类方法:

  • File(String pathname):传递文件路径参数,创建一个File对象。
  • boolean createNewFile():创建一个新的空文件,如果文件存在则不创建。
  • boolean mkdir():创建一个新的空目录,如果目录存在则不创建。
  • boolean delete():删除一个空文件或目录。
  • boolean exists():判断文件或目录是否存在。
  • String[] list():返回一个包含此目录中所有文件和子目录的字符串数组。
  • File[] listFiles():返回一个包括此目录中所有文件和子目录的File数组。
  • long lastModified():返回文件或目录最后修改的时间。

下面是一个创建文件并写入数据的示例:

import java.io.*;

public class FileDemo {

    public static void main(String[] args) {
        try {
            String fileName = "demo.txt";
            File file = new File(fileName);
            if (file.createNewFile()) {
                System.out.println("File created: " + file.getName());
                FileWriter writer = new FileWriter(fileName);
                writer.write("Hello World");
                writer.close();
                System.out.println("Successfully wrote to the file.");
            } else {
                System.out.println("File already exists.");
            }
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

IO流操作

字节流

Java IO流提供了许多字节流来处理二进制数据,其中最基础的字节流是InputStream和OutputStream。InputStream用于从输入流中读取字节,OutputStream用于将字节写入输出流中。下面是常用的InputStream和OutputStream方法:

  • int read(byte[] b):从输入流中读取数据并返回读取的数据的长度。
  • void write(byte[] b):将指定数组中的字节写入输出流中。
  • void flush():将缓冲区中的数据刷新到输出流中,保证数据完整性。
  • void close():关闭输入/输出流。

下面是一个读取文件并输出内容的示例:

import java.io.*;

public class InputStreamDemo {

    public static void main(String[] args) {
        try {
            File file = new File("demo.txt");
            FileInputStream inputStream = new FileInputStream(file);
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            System.out.println(new String(buffer, 0, length));
            inputStream.close();
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

字符流

除了字节流以外,Java IO流还提供了许多字符流来处理文本数据,其中最基础的字符流是Reader和Writer。Reader用于从输入流中读取字符,Writer用于将字符写入输出流中。下面是常用的Reader和Writer方法:

  • int read(char[] cbuf):从输入流中读取数据并返回读取的数据的长度。
  • void write(char[] cbuf):将指定数组中的字符写入输出流中。
  • void flush():将缓冲区中的数据刷新到输出流中,保证数据完整性。
  • void close():关闭输入/输出流。

下面是一个从控制台输入并输出到文件的示例:

import java.io.*;

public class WriterDemo {

    public static void main(String[] args) {
        try {
            File file = new File("output.txt");
            if (file.createNewFile()) {
                System.out.println("File created: " + file.getName());
            } else {
                System.out.println("File already exists.");
            }
            FileWriter writer = new FileWriter(file);
            BufferedWriter bufferedWriter = new BufferedWriter(writer);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                bufferedWriter.write(line);
                bufferedWriter.newLine();
            }
            bufferedReader.close();
            bufferedWriter.close();
            System.out.println("Successfully wrote to the file.");
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java文件与IO流操作原理详细分析 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 如何选择合适的Java垃圾收集器?

    首先,我们需要了解几种Java垃圾收集器的工作原理和特点,以作为选择的依据。通常我们会考虑以下几个方面: 垃圾回收机制:垃圾回收的机制是选择垃圾收集器的一个关键考虑因素。 内存模型:垃圾收集器通常会根据内存模型的特点来选择合适的算法。 吞吐量和延迟:吞吐量和延迟是垃圾收集器选择的主要考虑因素。 碎片整理能力:这是垃圾收集器的一个关键特点。碎片整理能力越强,程…

    Java 2023年5月11日
    00
  • Java操作Jenkins操作凭证(Credential)信息方式

    Java 操作 Jenkins 操作凭证(Credential)信息方式 Jenkins的凭证(Credential)是一种安全机制,用于存储登录Jenkins服务器和与其他系统进行交互时所需的敏感信息,例如密码、API tokens等等。 使用Java操作Jenkins凭证可以让我们在Jenkins系统中实现更加安全的信息存储和交互,方便我们对Jenkin…

    Java 2023年5月20日
    00
  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    下面是”SpringBoot整合Redis、ApachSolr和SpringSession的示例”的完整攻略,其中包括两个示例。 1. 环境搭建 首先,在我们开始之前,确保你已经正确地安装了Java、Maven、Redis、ApachSolr和SpringBoot。 1.1 安装Redis 可以在Redis官网上,下载并安装最新版的Redis。如果你使用的是…

    Java 2023年5月20日
    00
  • 经典的Java面试题及回答集锦(基础篇)

    经典的Java面试题及回答集锦(基础篇)攻略 1. 介绍 本篇攻略是针对Java基础面试的常见问题及回答进行总结。经典的Java面试题及回答集锦主要分为六个部分,包括Java基础,集合,多线程,IO,JVM及框架。本篇攻略将重点关注Java基础的面试题。 2. Java基础的面试题及回答 2.1 基本数据类型 Q: Java有哪些基本数据类型?请列举。 Ja…

    Java 2023年5月19日
    00
  • Java将excel中的数据导入到mysql中

    下面我将详细讲解“Java将excel中的数据导入到mysql中”的完整攻略。本攻略总体流程分为三步:读取Excel数据、连接MySQL数据库、将数据导入到数据库中。具体过程如下: 1. 读取Excel数据 首先需要使用Java中的一些类库来读取Excel表格数据。在这里我们使用Apache POI类库,它能够帮助我们读取和操作Excel表格文件。 代码示例…

    Java 2023年6月1日
    00
  • 给RedHat系统安装GNOME图形化桌面的方法

    以下是给RedHat系统安装GNOME图形化桌面的完整攻略: 1. 检查系统环境和更新 在开始安装GNOME之前,你需要检查你的系统是否满足GNOME的最低要求,并且更新系统以获取最新的软件包和修补程序。 打开终端并运行以下命令: sudo yum update sudo yum groupinstall "X Window System&quot…

    Java 2023年5月23日
    00
  • Struts2 漏洞分析及如何提前预防

    Struts2 是一个流行的 Java Web 应用程序框架,由于其广泛的应用和不断的开发,一些漏洞也逐渐被发现和修复。但是,攻击者仍然可以利用一些未经修补的漏洞对 Struts2 应用程序进行攻击。本文将详细讲解 Struts2 的漏洞及如何在应用程序中提前预防这些漏洞。 Struts2 漏洞分析 Struts2 漏洞的危害 Struts2 的漏洞可能会导…

    Java 2023年5月20日
    00
  • 简单了解SpringMVC常用组件作用解析

    以下是关于“简单了解SpringMVC常用组件作用解析”的完整攻略,其中包含两个示例。 简单了解SpringMVC常用组件作用解析 SpringMVC是一个基于MVC构架的Web框架,它提供了一种灵活、高效的方式来开发Web应用程序。在SpringMVC中,有一些常用的组件,下面我们来简单了解一下这些组件的作用。 DispatcherServlet Disp…

    Java 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部