欢迎访问宙启技术站
智能推送

如何使用Java中的IO函数读取和写入文件?

发布时间:2023-06-04 14:26:57

Java是一种高级编程语言,具有强大的I / O功能,可用于读取和写入文件。当涉及到Java I / O时,它通常指的是将数据从文件系统读取到应用程序中,或者将数据从应用程序写入文件系统。对于这些任务,Java提供了许多类和方法。

Java中的I / O类可分为以下几类:

1. 输入流

2. 输出流

3. 文件I / O

4. 缓冲I / O

5. 对象I / O

在本文中,我们将讨论如何使用Java I / O类读取和写入文件。

使用Java I / O函数读取文件

Java有许多用于读取文件的I / O类和函数。其中最常见的是FileInputStream类。该类提供了许多读取数据的方法,例如:

1. read()

2. read(byte[] b)

3. read(byte[] b, int off, int len)

4. skip(long n)

其中,read()函数从输入流中读取一个字节,如果到达文件的末尾,则返回-1。read(byte[] b)函数从输入流中最多读取“ b.length”字节,并将这些字节存储在字节数组“ b”中。read(byte[] b, int off, int len)函数从输入流中读取最多“ len”字节的数据,并将它们存储在字节数组“ b”中,始于偏移量“ off”。skip(long n)函数从输入流中跳过“ n”个字节的数据。

以下是一个Java程序,演示如何使用FileInputStream类读取文件:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadFileDemo {

    public static void main(String[] args) {

        FileInputStream fis = null;
        try {
            File file = new File("example.txt");
            fis = new FileInputStream(file);

            System.out.println("Total file size to read (in bytes) : " + fis.available());

            int content;
            while ((content = fis.read()) != -1) {
                // convert to char and display
                System.out.print((char) content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fis != null)
                    fis.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

在上面的示例中,我们使用了FileInputStream类来读取文件中的内容。首先,我们打开了文件example.txt,然后使用fis.read()函数从文件中读取每个字符,直到到达文件的末尾为止。

使用Java I / O函数编写到文件

Java具有许多用于编写文件内容的I / O类和函数。其中最常用的是FileOutputStream类。该类提供了许多写入数据的方法,例如:

1. write(int b)

2. write(byte[] b)

3. write(byte[] b, int off, int len)

4. flush()

5. close()

其中,write(int b)函数将一个字节写入输出流中。write(byte[] b)函数将字节数组中的所有字节写入输出流中。write(byte[] b, int off, int len)函数从数组“ b”中写入最多“ len”个字节的数据,并从偏移量“ off”处开始写入。flush()函数刷新输出流并将所有缓冲的数据写入底层设备中close()函数关闭输出流并释放与之关联的所有资源。

以下是一个Java程序,演示如何使用FileOutputStream类将数据写入文件中:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class WriteFileDemo {

    public static void main(String[] args) {

        FileOutputStream fos = null;
        try {
            String content = "This is the text content";
            File file = new File("example.txt");
            fos = new FileOutputStream(file);

            // get the content in bytes
            byte[] bytes = content.getBytes(StandardCharsets.UTF_8);

            fos.write(bytes);
            fos.flush();
            System.out.println("File written successfully");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fos != null)
                    fos.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

在上面的示例中,我们使用了FileOutputStream类将字符串内容写入文件example.txt中。首先,我们将字符串内容转换为字节数组,然后使用fos.write()函数将字节数组写入文件中。最后,我们使用fos.flush()函数刷新输出流,并使用fos.close()函数关闭输出流。