首页 > 编程语言 >【Java开发者必看】揭秘Java访问磁盘文件机制,让你的代码效率翻倍!

【Java开发者必看】揭秘Java访问磁盘文件机制,让你的代码效率翻倍!

时间:2024-11-07 16:18:57浏览次数:3  
标签:文件 java 必看 new IOException 开发者 io import Java

在Java中,访问磁盘文件通常使用java.io包中的类。这些类提供了多种方式来读取和写入文件。以下是一些常用的类及其用法:

1. FileReader 和 FileWriter

解释:
  • FileReader用于读取字符文件。
  • FileWriter用于写入字符文件。
示例代码:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReaderWriterExample {
    public static void main(String[] args) {
        // 写入文件
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, World!");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取文件
        try (FileReader reader = new FileReader("example.txt")) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. BufferedReader 和 BufferedWriter

解释:
  • BufferedReader用于高效地读取字符输入流。
  • BufferedWriter用于高效地写入字符输出流。
示例代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderWriterExample {
    public static void main(String[] args) {
        // 写入文件
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
            writer.write("Hello, World!");
            writer.newLine(); // 写入一个新行
            writer.write("This is a buffered writer example.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取文件
        try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. FileInputStream 和 FileOutputStream

解释:
  • FileInputStream用于读取字节文件。
  • FileOutputStream用于写入字节文件。
示例代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileStreamExample {
    public static void main(String[] args) {
        // 写入文件
        try (FileOutputStream fos = new FileOutputStream("example.bin")) {
            fos.write(65); // 写入字符 'A' 的 ASCII 码值
            fos.write(new byte[]{66, 67, 68}); // 写入字符 'B', 'C', 'D' 的 ASCII 码值
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取文件
        try (FileInputStream fis = new FileInputStream("example.bin")) {
            int byteData;
            while ((byteData = fis.read()) != -1) {
                System.out.print((char) byteData); // 将字节数据转换为字符并打印
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. RandomAccessFile

解释:
  • RandomAccessFile允许对文件进行随机读写操作。它既可以读也可以写,并且可以移动文件指针到任意位置。
示例代码:
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileExample {
    public static void main(String[] args) {
        try (RandomAccessFile raf = new RandomAccessFile("example.txt", "rw")) {
            raf.writeUTF("Hello, World!"); // 写入字符串(以UTF格式)
            raf.seek(0); // 移动文件指针到文件开头
            String data = raf.readUTF(); // 读取字符串(以UTF格式)
            System.out.println(data); // 打印读取的数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. NIO (New I/O)

解释:
  • Java NIO提供了更高效的文件操作方法,如FileChannelByteBuffer等。
  • NIO支持非阻塞I/O操作,适用于需要高性能的文件处理场景。
示例代码:
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.nio.file.Paths;
import java.nio.file.Files;

public class NIOExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");
        String content = "Hello, NIO!";
        ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());

        // 写入文件
        try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
            fileChannel.write(buffer);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取文件
        buffer.clear(); // 清空缓冲区以便重新读取数据
        try (FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.READ)) {
            fileChannel.read(buffer);
            buffer.flip(); // 切换缓冲区为读模式
            byte[] bytes = new byte[buffer.remaining()];
            buffer.get(bytes); // 从缓冲区读取数据到字节数组中
            System.out.println(new String(bytes)); // 打印读取的数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通过以上示例代码,你可以了解如何在Java中使用不同的类和方法来访问和操作磁盘文件。根据具体需求选择合适的类和方法,可以提高程序的性能和可维护性。

标签:文件,java,必看,new,IOException,开发者,io,import,Java
From: https://blog.csdn.net/LA1245780/article/details/143598814

相关文章

  • 揭秘Java中的随机数生成:让你的程序更加不可预测!
    在Java中,生成随机数可以使用java.util.Random类或Math.random()方法。以下是详细的代码示例和解释:使用 java.util.Random 类1.生成一个随机整数importjava.util.Random;publicclassRandomIntegerExample{publicstaticvoidmain(String[]args){Ra......
  • Maven简单介绍——必要的Java管理与构建
    概念    通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题。    虽然这些都是小问题,但是一旦配置起来就会很费时间,这个时候Maven就解决了这样的问题......
  • 揭秘:Java加盐加密算法,保护你的数据安全!
    加盐加密算法是一种在密码处理中广泛使用的技术,通过为密码添加一个随机值(称为“盐”)来增加密码的复杂性和安全性。下面将详细介绍加盐加密算法的概念、实现步骤以及代码示例:加盐加密算法概念加盐加密算法:通过引入随机生成的盐值与用户密码组合后进行哈希运算,以增强密码的安......
  • 【揭秘】Spring Boot配置文件与日志文件的神秘面纱!开发者必看!
    SpringBoot的配置文件与日志文件是应用程序配置和运行日志管理的关键组成部分。下面将详细介绍这两种文件:SpringBoot配置文件基本概述:SpringBoot支持多种配置文件格式,包括.properties、.yml和.yaml。.properties是传统的键值对形式,简单易懂,但当配置结构复杂时容易......
  • 深入理解Java虚拟机 --- 初见JVM
    虚拟机是啥?所谓虚拟机(VirtualMachine),就是一台虚拟的计算机它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟......
  • java SPI 代码示例
    SPI是ServiceProviderInterface的缩写,中文解释为服务提供发现接口SPI是一种「基于接口的编程+策略模式+配置文件」组合实现的动态加载机制,可以根据逻辑加载不通的接口实现实现步骤:在类路径下的 META-INF/services目录下,创建以服务接口的"全限定名"命名的文件,文......
  • Java并发编程 --- 并发容器
    ConcurrentHashMap基本介绍在JDK1.8中,它的数据结构:Node数组+链表/红黑树初始化/***Initializestable,usingthesizerecordedinsizeCtl.*/privatefinalNode<K,V>[]initTable(){Node<K,V>[]tab;intsc;while((tab=table)==null||tab.length......
  • Maven简单介绍——必要的Java管理与构建
    概念    通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题。    虽然这些都是小问题,但是一旦配置起来就会很费时间,这个时候Maven就解决了这样的问题......
  • Java并发编程 --- 线程安全
    为什么会有线程安全问题?为什么会存在线程安全问题呢?那我们先来探究一下JMM(Java内存模型)线程与JMM每个线程都有自己的工作内存,它会存储主内存中变量的Copy值,再对变量进行操作的时候,也是操作工作内存中变量的Copy值。当线程Dead(生命周期结束)时,才会将自己工作内存中的数据同......
  • 基于SpringBoot的Java教学支持系统开发指南
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理教学辅助平台的相关信息成为必然。开发合适的教学辅助平台,可以方便管理人员对教学辅助平台......