针对“Java文件操作之按行读取文件和遍历目录的方法”,我为您提供以下攻略:
一、按行读取文件
1. BufferedReader按行读取
要按行读取文件,可以借助BufferedReader
类。具体实现步骤如下:
- 创建文件,例如我们要读取的文件名为
test.txt
,存放在D:\test
目录下,则创建文件实例代码如下:
java
File file = new File("D:/test/test.txt");
- 通过
BufferedReader
读取文件内容,代码如下:
java
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader
提供了readLine()
方法,可以按行读取文件。循环读取每一行,直到读取到最后一行为止。需要注意的是,在读取每一行时,要判断读取到的行是否为空,不为空则输出该行内容。
- 关闭文件
在使用文件读取完毕之后,需要显示关闭文件。为了方便使用try-with-resources
语句自动关闭文件,代码如下:
java
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
2. Scanner按行读取
除了BufferedReader
,Scanner
类也可以按行读取文件。代码实现如下:
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
Scanner
提供了nextLine()
方法,根据换行符分割文件内容,逐行读取文件内容。需要注意的是,还可以使用hasNextLine()
判断文件内容是否有下一行,需要为每一个读取过程打开及关闭文件。
二、遍历目录
1. 遍历目录 – listFile方法
遍历目录有多种方法,比如使用listFile
方法。File
类提供了listFile
方法,可以返回一个目录下所有子目录和文件。步骤如下:
- 指定需要查找的目录,例如我们要查找的目录为
D:\test
,代码如下:
java
File f = new File("D:\\test");
- 调用
listFiles()
方法,遍历目录下所有文件和文件夹:
java
File[] files = f.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("文件夹:" + file.getAbsolutePath());
} else {
System.out.println("文件:" + file.getAbsolutePath());
}
}
listFiles()
返回的是目录下所有文件或文件夹对应的File
数组。之后,循环遍历该数组,根据isDirectory()
方法判断每个元素是文件夹还是文件,然后输出路径和名称。
2. 遍历目录 – Files.walk方法
除了使用listFile
方法遍历目录,Java7
引入Files
类,可以使用其提供的walk()
和find()
方法,来遍历目录。walk()
方法遍历目录下的所有子目录和文件。步骤如下:
- 使用
Paths.get()
获取Path
实例,来指定文件路径,如下:
java
Path start = Paths.get("D:/test");
- 调用
Files.walk
方法,获取到目录下的全部文件和目录的路径。Files.walk
方法传入三个参数:查找路径、递归遍历的深度、过滤器。在此,我们不设置递归深度,默认设置成Integer.MAX_VALUE
就可以。代码如下:
java
try (Stream<Path> stream = Files.walk(start)) {
stream.forEach(path -> {
if (Files.isDirectory(path)) {
System.out.println("文件夹:" + path.toString());
} else {
System.out.println("文件:" + path.toString());
}
});
} catch (IOException e) {
e.printStackTrace();
}
在Files.walk
返回的Stream<Path>
上,进行forEach
方法遍历。根据是否是文件夹,调用isDirectory()
判断,输出目录和文件名。注意:需要对Stream<Path>
进行渐进式关闭。
这就是针对“Java文件操作之按行读取文件和遍历目录的方法”的完整攻略。谢谢!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java文件操作之按行读取文件和遍历目录的方法 - Python技术站