java 读写文件[多种方法]

Java 读写文件攻略

在 Java 中,提供了多种读写文件的方法,本文将介绍最常用的几种方法,以及两条示例。

使用 FileInputStream 和 FileOutputStream

Java 的 FileInputStreamFileOutputStream 分别表示字节流的输入输出流,可以用于读写二进制文件。以下是使用这种方法读写文件的示例代码:

import java.io.*;

public class ReadWriteFileDemo {
    public static void main(String[] args) {
        try {
            // 读文件
            FileInputStream inputStream = 
                new FileInputStream("input.txt");
            int data = inputStream.read();
            while(data != -1) {
                // do something with data...
                System.out.println(data);
                data = inputStream.read();
            }
            inputStream.close();

            // 写文件
            FileOutputStream outputStream = 
                new FileOutputStream("output.txt");
            String str = "Hello, world!";
            byte[] strToBytes = str.getBytes();
            outputStream.write(strToBytes);
            outputStream.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,FileInputStreamFileOutputStream 都需要传入一个文件的路径作为参数来创建。读文件的步骤是:打开输入流 -> 读取数据 -> 关闭输入流;写文件的步骤是:打开输出流 -> 写入数据 -> 关闭输出流。

使用 FileReader 和 FileWriter

Java 的 FileReaderFileWriter 分别表示字符流的输入输出流,可以用于读写文本文件。以下是使用这种方法读写文件的示例代码:

import java.io.*;

public class ReadWriteFileDemo {
    public static void main(String[] args) {
        try {
            // 读文件
            FileReader reader = new FileReader("input.txt");
            int data = reader.read();
            while(data != -1) {
                // do something with data...
                System.out.print((char) data);
                data = reader.read();
            }
            reader.close();

            // 写文件
            FileWriter writer = new FileWriter("output.txt");
            writer.write("Hello, world!");
            writer.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,FileReaderFileWriter 都需要传入一个文件的路径作为参数来创建。读文件和写文件的步骤与字节流的方法类似。

示例一:读取文件内容到字符串

以下是一个将文件内容读取到字符串中的示例代码:

import java.io.*;

public class ReadFileToStringDemo {
    public static String readFileToString(String filePath) {
        StringBuilder result = new StringBuilder();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filePath));
            String line = reader.readLine();
            while (line != null) {
                result.append(line).append("\n");
                line = reader.readLine();
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result.toString();
    }

    public static void main(String[] args) {
        String content = readFileToString("input.txt");
        System.out.println(content);
    }
}

上述代码中,我们使用了 BufferedReader 读取文件的内容,并将每行文本拼接成一个字符串返回。

示例二:使用 NIO 读写文件

以下是使用 NIO 读写文件的示例代码:

import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class NIOReadWriteDemo {
    public static void readFile(String fileName) throws IOException {
        RandomAccessFile file = new RandomAccessFile(fileName, "rw");
        FileChannel channel = file.getChannel();
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        while (channel.read(buffer) > 0) {
            buffer.flip();
            while (buffer.hasRemaining()) {
                System.out.print((char) buffer.get());
            }
            buffer.clear();
        }
        channel.close();
        file.close();
    }

    public static void writeFile(String fileName, String content) throws IOException {
        RandomAccessFile file = new RandomAccessFile(fileName, "rw");
        FileChannel channel = file.getChannel();
        byte[] bytes = content.getBytes();
        ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
        buffer.put(bytes);
        buffer.flip();
        channel.write(buffer);
        channel.close();
        file.close();
    }

    public static void main(String[] args) {
        try {
            readFile("input.txt");
            writeFile("output.txt", "Hello, world!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在 NIO 中,我们使用 FileChannelByteBuffer 来进行文件的读写操作。在读文件时,我们首先打开文件通道,然后创建一个缓冲区来保存读取到的字节,每次从通道中读取数据后,要记得重置缓冲区。

在写文件时,我们先将要写入的字符串转换为字节数组,然后创建一个缓冲区来保存这些字节。写入过程与读取过程类似。

使用 NIO 的好处是,它可以处理大文件并且速度比较快。因为它使用内存映射文件来读写数据,而且它的 API 比较简单易用。但是,使用 NIO 读写文件比较底层,需要对 Java I/O 有一定的了解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 读写文件[多种方法] - Python技术站

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

相关文章

  • 关于Java数组查询的相关问题及实例 原创

    关于Java数组查询的相关问题及实例 原创 Java中的数组是一组相同类型的数据集合。数组是一个非常重要的数据结构,在实际的代码中应用广泛。对于Java数组的查询操作,开发者也要掌握。 如何创建一个Java数组 在Java中,我们可以通过以下语句创建一个整型数组: int[] arr = new int[10]; 这个语句用于声明一个名为arr的整型数组,长…

    Java 2023年5月26日
    00
  • Spring Boot运行部署过程图解

    下面详细讲解一下“SpringBoot运行部署过程图解”的完整攻略。 简介 SpringBoot是基于Spring Framework的一款开源框架,目前已成为Java领域中的热门框架之一。SpringBoot的优势在于它可以快速简单的创建一个独立运行的、生产级别的Spring应用,而不需要以前的一些繁琐的配置。本文将介绍SpringBoot的运行部署过程,…

    Java 2023年5月15日
    00
  • 详解Java对象结构与对象锁的升级

    详解Java对象结构与对象锁的升级 Java对象结构 Java对象在内存中的实际存储由三部分组成:对象头、实例数据和对齐填充。 对象头 对象头是Java对象的一部分,用于存储对象自己的运行时数据,包括以下内容: Mark Word: 用来锁定对象、记录对象哈希值、记录对象所属的分代年龄等信息。 Class: 指向对象的Class对象。 在Java 8中,对象…

    Java 2023年5月26日
    00
  • Struts2 控制文件上传下载功能实例代码

    本文将详细讲解如何在 Struts2 Web 应用程序中实现文件上传下载功能,并配合两条示例代码进行演示。 1. 添加 Maven 依赖 在 pom.xml 文件中添加以下 Maven 依赖,用于支持文件上传下载功能。 <dependency> <groupId>commons-fileupload</groupId> &…

    Java 2023年5月20日
    00
  • SpringBoot整合Shiro两种方式(总结)

    Spring Boot整合Shiro两种方式(总结) Shiro是一个流行的Java安全框架,可以提供身份验证、授权、加密等功能。Spring Boot可以很方便地与Shiro集成,本文将介绍两种Spring Boot整合Shiro的方式,并提供两个示例,演示如何使用Spring Boot整合Shiro。 1. 方式一:使用Shiro-Spring Boot…

    Java 2023年5月14日
    00
  • Tomcat7.0安装配置详细(图文)

    下面是关于“Tomcat7.0安装配置详细(图文)”的攻略: Tomcat7.0安装配置详细(图文) 介绍 Tomcat是一个开放源代码的Web服务器,也是一个servlet容器,是Apache软件基金会的一个核心项目。Tomcat 7是Tomcat的一个稳定版本,本文将详细介绍它的安装和配置。 安装 步骤1: 下载Tomcat7.0安装包 前往Apache…

    Java 2023年5月19日
    00
  • Spring中使用atomikos+druid实现经典分布式事务的方法

    Spring是一个非常流行的Java框架,可以用于构建各种类型的应用程序,包括分布式应用程序。在分布式应用程序中,经典的分布式事务是非常重要的,它可以确保整个事务的一致性和完整性。Atomikos和Druid是常用的分布式事务解决方案,它们都有很多优点,例如可靠性、高性能和灵活性等。下面是如何在Spring中使用Atomikos和Druid实现经典分布式事务…

    Java 2023年5月20日
    00
  • java代码执行字符串中的逻辑运算方法

    首先我们需要理解字符串中的逻辑运算方法。在Java中,我们可以使用以下方法在字符串中执行逻辑运算: eval():将字符串解析为表达式并执行它。这是最常用的方法,但也是最危险的方法,因为它可以执行任意的Java代码。因此,在使用该方法时,需要特别小心,确保输入的字符串不会被恶意利用。 ScriptEngineManager和ScriptEngine:这些Ja…

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