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

如何使用Java中内置的10个IO函数

发布时间:2023-06-26 22:19:37

Java中有很多内置的IO函数可以用来处理文件和流的输入输出。在本文中,我们将介绍Java中的10个IO函数和它们的用例。

1. File类

File类表示文件或文件夹在文件系统中的元数据。它提供了多个方法用以获取、删除和重命名文件,还可以判断文件是否存在,是文件还是文件夹等。

使用示例:

File f1 = new File("filename.txt");
File f2 = new File("directoryname");
f1.createNewFile(); // 创建新文件
f2.mkdir(); // 创建新目录
f1.delete(); // 删除文件

2. FileInputStream和FileOutputStream类

FileInputStream用于从文件系统中读取数据,而FileOutputStream用于将数据写入文件系统。这两个类使用byte数组和单个字节读取和写入数据。如果要读取或写入文本文件,最好使用BufferedReader和BufferedWriter类。

使用示例:

FileInputStream in = new FileInputStream("file.txt");
FileOutputStream out = new FileOutputStream("file.out");
int c;
while((c = in.read()) != -1) {
    out.write(c);
}
in.close();
out.close();

3. BufferedInputStream和BufferedOutputStream类

BufferedInputStream和BufferedOutputStream提供缓存机制来加快读写速度。这两个类使用byte数组读取和写入数据。

使用示例:

FileInputStream in = new FileInputStream("file.txt");
BufferedInputStream bIn = new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream("file.out");
BufferedOutputStream bOut = new BufferedOutputStream(out);
byte[] buffer = new byte[1024];
int len;
while ((len = bIn.read(buffer)) > 0) {
    bOut.write(buffer, 0, len);
}
bIn.close();
bOut.flush();
bOut.close();

4. FileReader和FileWriter类

FileReader和FileWriter用于读取和写入文本文件。它们使用字符数组读取和写入数据,因此比FileInputStream和FileOutputStream更适合读取和写入文本文件。

使用示例:

FileReader in = new FileReader("file.txt");
FileWriter out = new FileWriter("file.out");

int c;
while((c = in.read()) != -1) {
    out.write(c);
}
in.close();
out.close();

5. BufferedReader和BufferedWriter类

BufferedReader和BufferedWriter增加了缓冲机制,加快了读写速度。它们的使用方式和FileReader和FileWriter类似。

使用示例:

BufferedReader in = new BufferedReader(new FileReader("file.txt"));
BufferedWriter out  = new BufferedWriter(new FileWriter("file.out"));
String str;
while ((str = in.readLine()) != null) {
    out.write(str);
    out.newLine();
}
in.close();
out.flush();
out.close();

6. DataInputStream和DataOutputStream类

DataInputStream和DataOutputStream可以用来读写基本数据类型以及字符串等数据。当要将数据写入文件时,必须使用DataOutputStream类。

使用示例:

FileOutputStream fos = new FileOutputStream("file.dat");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(42);
dos.writeDouble(3.14);
dos.close();

FileInputStream fis = new FileInputStream("file.dat");
DataInputStream dis = new DataInputStream(fis);
int intNum = dis.readInt();
double doubleNum = dis.readDouble();
dis.close();

7. InputStreamReader和OutputStreamWriter类

InputStreamReader和OutputStreamWriter类用于将字节流转换为字符流。它们可以用一个指定的字符集对字节流进行解码,或者将字符流编码为字节流。

使用示例:

FileInputStream in = new FileInputStream("file.txt");
InputStreamReader isr = new InputStreamReader(in, "UTF-8");
FileOutputStream out = new FileOutputStream("file.out");
OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");

int c;
while ((c = isr.read()) != -1) {
    osw.write(c);
}
isr.close();
osw.flush();
osw.close();

8. PrintStream类

PrintStream类是比较常用的输出流。它可以将任何数据类型打印到指定输出流,如控制台或文件。

使用示例:

PrintStream out = new PrintStream(new FileOutputStream("file.out"));
out.println("Hello World!");
out.close();

9. PrintWriter类

PrintWriter类也是一个比较常用的输出流。它可以打印任何数据类型到指定输出流,如控制台或文件。PrintWriter类提供了自动刷新缓冲区的功能。

使用示例:

PrintWriter out = new PrintWriter(new FileWriter("file.out"));
out.println("Hello World!");
out.close();

10. RandomAccessFile类

RandomAccessFile类提供了对文件的随机访问,可以定位到文件的任何位置读取和写入数据。可以使用此类访问任何文件,包括本地文件、网络文件和数据流。

使用示例:

RandomAccessFile file = new RandomAccessFile("file.txt", "rw");
file.writeBytes("Hello World!");
file.seek(6);
int c;
while((c = file.read()) != -1) {
    System.out.print((char)c);
}
file.close();

总结

这些IO函数是Java中最常用的,你可以根据需要的情况选择使用其中的哪些。使用Java中的IO函数时,一定要记得关闭流以释放资源。这样可以确保程序在处理大量文件时不会出现内存泄漏的问题。