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

Java中的文件读写:使用File和IO函数来读写文件

发布时间:2023-06-14 01:20:07

在Java中读写文件是非常常见的操作,这可以使程序直接读取或修改磁盘上的文件。Java中提供了一些用于读写文件的API,如File、IO函数等。

首先,我们需要了解一下File类。File类是Java中基本的文件I / O类,它用于操作文件和目录。该类提供了两个构造函数:

1. public File(String pathname) :根据路径名字符串创建一个新File实例,表示相对或绝对路径名的文件或目录。

2. public File(String parent, String child) :根据父路径名和子路径名字符串创建一个新File实例,为指定的父路径名和子路径名组合子路径。

除此之外,File类还提供了用于检查文件和目录的方法,如isFile()isDirectory()等。

然后我们可以使用IO函数来实现文件的读写操作。Java中的IO函数主要分为字节流和字符流两种,常用的有InputStream、OutputStream、Reader和Writer。其中,InputStream和OutputStream是用于操作字节的输入流和输出流,Reader和Writer是用于操作字符的输入流和输出流。

当读写文本文件时,可用使用Reader和Writer,当读写二进制文件时,可使用InputStream和OutputStream。下面介绍一下常用的函数:

1. public void write(byte[] b) throws IOException :将b.length字节从指定的字节数组写入此输出流。

2. public void flush() throws IOException :刷新此输出流并强制任何缓冲的输出数据被写出。

3. public void close() throws IOException :关闭此输出流并释放与此流有关的所有系统资源。

4. public int read(byte[] b) throws IOException :从输入流读取一些字节数,并将它们存储到缓冲区b中。

5. public int read() throws IOException :以字节为单位从输入流中读取一个字节。

6. public void close() throws IOException :关闭此输入流并释放与此流有关的所有系统资源。

例如,我们可以使用以下代码读取文件:

public static void readFile(String fileName) {
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(fileName);
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) != -1) {
            System.out.println(new String(buffer, 0, len));
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fis != null) {
                fis.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我们也可以使用以下代码来写入文件:

public static void writeFile(String fileName) {
    FileOutputStream fos = null;
    String content = "hello world";
    try {
        fos = new FileOutputStream(fileName);
        fos.write(content.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fos != null) {
                fos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

需要注意的是,文件读写操作一定要进行异常捕获和处理,避免出现未手动释放资源的情况导致程序异常或崩溃。