如何使用Java中内置的10个IO函数
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函数时,一定要记得关闭流以释放资源。这样可以确保程序在处理大量文件时不会出现内存泄漏的问题。
