用java代码实现读取一个文件中所以的txt文件,然后按行读取txt文件内容清除所以空格和换行并且判断如果等于某个字符串时就,更换读取内容方式,按两行读取中间换行并且不读取换行和空格数据
时间: 2023-07-18 20:40:55 浏览: 95
可以使用`Files`类中的`walk`方法递归获取文件夹中所有的txt文件,并使用`BufferedReader`和`FileReader`读取文件,使用`replaceAll()`方法清除空格和换行符。在读取每一行时,需要判断是否等于某个字符串,如果等于则更换读取方式,按两行读取,并且不读取换行和空格数据。下面是示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ReadTxtFile {
public static void main(String[] args) {
String folderName = "folder";
String targetString = "target";
try {
Files.walk(Paths.get(folderName))
.filter(path -> path.toString().endsWith(".txt"))
.forEach(path -> {
try (BufferedReader br = new BufferedReader(new FileReader(path.toFile()))) {
String line;
boolean isNextLine = false;
while ((line = br.readLine()) != null) {
line = line.replaceAll("\\s+", "");
if (line.equals(targetString)) {
isNextLine = true;
continue;
}
if (isNextLine) {
isNextLine = false;
String nextLine = br.readLine();
if (nextLine != null) {
nextLine = nextLine.replaceAll("\\s+", "");
System.out.println(line + nextLine);
}
} else {
System.out.println(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
其中,`folder`是要读取的文件夹名,`target`是要判断的字符串,可以根据实际情况进行修改。`walk`方法递归获取文件夹中所有的txt文件,`filter`方法用于过滤非txt文件。在读取每一行时,判断是否等于某个字符串,如果等于则将`isNextLine`标记设为`true`,表示下一行需要与当前行一起读取。如果`isNextLine`为`true`,则读取下一行并与当前行拼接输出。否则,直接输出当前行即可。
阅读全文