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

Java函数:如何在文件中读写数据?

发布时间:2023-06-11 11:50:39

Java中可以使用File类和IO流来读写文件中的数据。File类可以用来操作文件和文件夹,包括创建文件、重命名、删除等;而IO流可以读写文件中的数据,包括字节流和字符流两种。

一、读取文件中的数据

1、使用字节流读取文件

使用 FileInputStream 类可以读取文件的字节数据,该类的构造方法接受一个 File 实例或文件路径,将文件的内容读入一个字节数组:

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

public class FileReadDemo {
    public static void main(String[] args) {
        try(FileInputStream fis = new FileInputStream("file.txt");) {
            byte[] buffer = new byte[1024];
            int len;
            while((len = fis.read(buffer)) != -1) {
                String content = new String(buffer, 0, len);
                System.out.println(content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意在使用完流对象后需要关闭流,在Java7之后可以使用try-with-resource语句来自动关闭流。

2、使用字符流读取文件

使用 FileReader 类和 BufferedReader 类可以读取文件的字符数据,该类的构造方法接受一个 File 实例或文件路径,逐行读取文件中的数据:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadDemo {
    public static void main(String[] args) {
        try(BufferedReader reader = new BufferedReader(new FileReader("file.txt"));) {
            String line;
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意在使用完流对象后需要关闭流,在Java7之后可以使用try-with-resource语句来自动关闭流。同时,使用 BufferedReader 避免了每次读取都生成新的 String 对象。

二、写入数据到文件中

1、使用字节流写入数据

使用 FileOutputStream 类可以向文件中写入字节数据,该类的构造方法接受一个 File 实例或文件路径,通过 write() 方法写入数据:

import java.io.FileOutputStream;
import java.io.IOException;

public class FileWriteDemo {
    public static void main(String[] args) {
        try(FileOutputStream fos = new FileOutputStream("file.txt");) {
            String content = "Hello World!";
            byte[] bytes = content.getBytes();
            fos.write(bytes);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意在使用完流对象后需要关闭流,在Java7之后可以使用try-with-resource语句来自动关闭流。

2、使用字符流写入数据

使用 FileWriter 类和 BufferedWriter 类可以向文件中写入字符数据,该类的构造方法接受一个 File 实例或文件路径,通过 write() 方法写入数据:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriteDemo {
    public static void main(String[] args) {
        try(BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"));) {
            String content = "Hello World!";
            writer.write(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意在使用完流对象后需要关闭流,在Java7之后可以使用try-with-resource语句来自动关闭流。同时,使用 BufferedWriter 增加了缓冲功能,避免了每次写入都生成新的字符数组和 String 对象。

三、读写文件常见问题

1、文件路径问题

读取文件或写入数据时需要正确的文件路径。如果文件路径不正确,会抛出 FileNotFoundException 异常。使用相对路径时需要注意当前的工作目录,此时可以使用 System.getProperty("user.dir") 来获取当前的工作目录。

2、文件编码问题

在读写文件时需要注意文件的编码格式。如果编码格式不正确,可能会引起乱码问题。常用的编码格式包括 UTF-8、GBK、ISO-8859-1 等。

3、资源释放问题

在读写文件时需要释放使用完毕的资源,否则可能会导致文件打开错误等问题。可以使用 try-with-resource 语句来自动关闭流,避免资源泄漏。

四、总结

在Java中可以使用 File 类和 IO 流来读写文件中的数据。使用字节流和字符流可以读写文件中的数据,其中 BufferedReader 和 BufferedWriter 可以提高效率。在读写文件时需要注意文件路径、编码格式和资源释放等问题,确保文件读写的正确性。