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中,掩码的主要作用是用来过滤或者匹配不同的字节位。掩码是用位运算符来创建的。在Java中,我们可以使用按位与、或、异或等位运算符来创建掩码。 按位与掩码 按位与掩码是将每个位分别与操作数进行运算,返回新的结果。当操作数均为1的时候,该位的掩码返回1,否则返回0。在Java中,我们可以使用“&”符号来表示按位与掩码…

    Java 2023年5月29日
    00
  • Java的Struts框架报错“ControllerConfigException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ControllerConfigException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 控制器错误:如果控制器不正确,则可能会出现此错误。在这种情况下,需要检查控制器以解决此问题。 以下是两个实例: 例 1 如…

    Java 2023年5月5日
    00
  • Java将Object转换为数组的代码

    要将Java中的Object类型转换成数组,可以使用Java的反射机制来实现。具体的步骤如下: 1. 获取Object的Class对象 通过Object的getClass()方法获取一个Class对象,然后调用Class类的getComponentType()方法获取数组元素的类型,最后调用java.lang.reflect.Array的newInstanc…

    Java 2023年5月26日
    00
  • Java中的线程是什么?

    Java中的线程是程序执行的最小单位。线程是指在单个程序中执行的一组指令,这些指令共享同一个进程,并且可以访问相同的变量和对象。在Java中,线程是通过Thread类来实现的。 创建线程的方式 在Java中,创建线程有两种方式: 继承Thread类 通过继承Thread类并重写run方法来创建线程。示例代码如下: class MyThread extends…

    Java 2023年4月28日
    00
  • javax.validation自定义日期范围校验注解操作

    关于“javax.validation自定义日期范围校验注解操作”的完整攻略,我将从以下三个方面进行详细讲解: 什么是javax.validation自定义注解? 如何实现自定义日期范围校验注解? 示例演示 1. 什么是javax.validation自定义注解? javax.validation是Java中的一种验证框架,它提供了各种验证约束注解,包括@N…

    Java 2023年5月20日
    00
  • HTML实现title 属性换行小技巧

    当我们在HTML标记中使用title属性时,有时候需要在倒数第二个单词之后添加一个换行符。这个时候我们可以用一些小技巧来完成。 方法一:使用实体字符 HTML中有几个实体字符可以用于在title属性中添加换行: &#13; 或 &#x0D; 表示回车 &#10; 或 &#x0A; 表示换行 代码示例: <a href=&…

    Java 2023年6月15日
    00
  • Java中LinkedList详解和使用示例_动力节点Java学院整理

    Java中LinkedList详解和使用示例 LinkedList简介 LinkedList 是 Java Collections 中的一种 List 集合实现,它基于双向链表数据结构实现。LinkedList 能够支持快速的插入和删除操作,但是访问集合中的任意元素则会比较慢。 LinkedList的特点 LinkedList 内部使用链表数据结构实现,插入…

    Java 2023年5月26日
    00
  • 详解JAVA中转义字符

    当我们需要在Java中表示一些特殊含义的字符时,会用到转义字符,也就是用一个反斜杠(\)将特殊字符进行转义。Java中转义字符的使用可以大大丰富字符串的表达能力,让我们来详解一下。 转义字符的常见用法 在Java中,转义字符是以反斜杠(\)开头,后面紧跟着代表特殊含义的字符。下面是Java中经常用到的转义字符及其对应的含义: \n:换行符 \t:制表符 \’…

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