Java中的文件读写:File类和FileReader/FileWriter类
在Java中,文件操作是一个非常基础而又常见的操作。Java提供了许多类和方法用于文件的读写操作,本文将重点介绍File类和FileReader、FileWriter类。
1. File类
File类是Java中操作文件的基础类之一,它可以表示文件或者文件夹(目录)。File类中有很多方法可以帮助我们操作文件,例如创建文件、删除文件、判断文件是否存在等等。
在使用File类时,我们需要实例化一个File对象。有两种方式来创建File对象:
1)传入文件路径
File file = new File("C:/Users/Administrator/Desktop/test.txt");
2)传入文件夹路径和文件名
File file = new File("C:/Users/Administrator/Desktop", "test.txt");
File类中的常用方法如下:
1)创建文件
createNewFile()方法用于创建一个空文件,如果文件已经存在,则不会创建。例如:
File file = new File("C:/Users/Administrator/Desktop/test.txt");
if (file.createNewFile()) {
System.out.println("文件创建成功!");
} else {
System.out.println("文件已存在。");
}
2)删除文件
delete()方法用于删除文件或目录,如果删除成功,则返回true;否则返回false。例如:
File file = new File("C:/Users/Administrator/Desktop/test.txt");
if (file.delete()) {
System.out.println("文件删除成功!");
} else {
System.out.println("文件删除失败。");
}
3)判断文件是否存在
exists()方法用于判断文件是否存在,如果存在则返回true;否则返回false。例如:
File file = new File("C:/Users/Administrator/Desktop/test.txt");
if (file.exists()) {
System.out.println("文件存在!");
} else {
System.out.println("文件不存在。");
}
4)获取文件大小
length()方法用于获取文件大小。例如:
File file = new File("C:/Users/Administrator/Desktop/test.txt");
System.out.println("文件大小为:" + file.length() + " bytes");
5)遍历文件夹
list()方法和listFiles()方法用于遍历文件夹中的文件和子文件夹。例如:
File dir = new File("C:/Users/Administrator/Desktop");
String[] files = dir.list(); // 获取文件列表
for (String file : files) {
System.out.println(file);
}
File[] files = dir.listFiles(); // 获取文件对象数组
for (File file : files) {
if (file.isDirectory()) { // 如果是目录则输出目录名
System.out.println("目录:" + file.getName());
} else {
System.out.println("文件:" + file.getName() + ",大小:" + file.length() + " bytes");
}
}
2. FileReader和FileWriter类
FileReader和FileWriter类不仅可以读写文本文件,还可以处理其他类型的文件,例如音视频文件。它们的使用非常简单,只需要实例化后调用相应的方法。
FileReader类的常用方法如下:
1)读取单个字符
read()方法用于读取单个字符,返回int类型的值,如果没有可读的字符,则返回-1。例如:
FileReader reader = new FileReader("C:/Users/Administrator/Desktop/test.txt");
int c;
while ((c = reader.read()) != -1) {
System.out.print((char)c);
}
reader.close();
2)读取字符数组
read(char[] cbuf)方法用于读取字符数组,返回读取的字符数,如果没有可读的字符,则返回-1。例如:
FileReader reader = new FileReader("C:/Users/Administrator/Desktop/test.txt");
char[] c = new char[1024];
int len;
while ((len = reader.read(c)) != -1) {
System.out.print(new String(c, 0, len));
}
reader.close();
3)跳过指定字符
skip(long n)方法用于跳过指定字符数。例如:
FileReader reader = new FileReader("C:/Users/Administrator/Desktop/test.txt");
reader.skip(10); // 跳过前10个字符
int c;
while ((c = reader.read()) != -1) {
System.out.print((char)c);
}
reader.close();
FileWriter类的常用方法如下:
1)写入单个字符
write(int c)方法用于写入单个字符,例如:
FileWriter writer = new FileWriter("C:/Users/Administrator/Desktop/test.txt");
writer.write('H'); // 写入单个字符
writer.write('e'); // 写入单个字符
writer.write('l'); // 写入单个字符
writer.write('l'); // 写入单个字符
writer.write('o'); // 写入单个字符
writer.close();
2)写入字符数组
write(char[] cbuf)方法用于写入字符数组,例如:
FileWriter writer = new FileWriter("C:/Users/Administrator/Desktop/test.txt");
String str = "Hello World!";
writer.write(str.toCharArray()); // 写入字符数组
writer.close();
3)写入字符串
write(String str)方法用于写入字符串,例如:
FileWriter writer = new FileWriter("C:/Users/Administrator/Desktop/test.txt");
String str = "Hello World!";
writer.write(str); // 写入字符串
writer.close();
4)追加内容
FileWriter的构造方法中有一个append参数,当该参数为true时,表示追加内容。例如:
FileWriter writer = new FileWriter("C:/Users/Administrator/Desktop/test.txt", true);
writer.write("Java is good!"); // 追加内容
writer.close();
以上就是关于Java文件读写的介绍,其中File类和FileReader/FileWriter类是经常使用的类。在实际开发过程中,文件的读写经常用于配置文件的读取和处理、日志文件的记录等场合。当涉及到大量数据时,建议使用字节流进行操作,效率会更高。
