while ((line = reader.readLine()) != null&&line.contains("拼音:")) 为啥括号内永远为false
时间: 2024-04-23 07:22:43 浏览: 14
这个问题的原因可能是文本中不包含 "拼音:" 这个字符串,或者是 reader 对象已经到达文本的结尾。如果文本中确实没有 "拼音:" 这个字符串,那么条件判断语句的结果会永远为 false;如果 reader 对象已经到达文本的结尾,那么再次调用 readLine() 方法会返回 null,也就是条件判断语句的结果为 false,从而退出循环。你可以在代码中添加一些打印语句,来确认代码的执行过程和条件判断语句的结果。
相关问题
java中读取文件用该代码,到文件中空行代码就停止了,怎么改while ((line = reader.readLine())!= null&&line.contains("拼音:"))
如果你想在读取文件的同时判断每一行是否包含指定内容(例如"拼音:"),可以在while循环中加入一个判断条件,如下所示:
```
try {
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
if (line.trim().isEmpty()) {
continue; // 跳过空行
}
if (line.contains("拼音:")) {
// 处理包含指定内容的行
...
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
```
在这个代码中,我们首先使用`trim()`方法去掉每行的首尾空白字符,然后使用`isEmpty()`方法判断该行是否为空行。如果是空行,则使用`continue`语句跳过该行,继续读取下一行。如果不是空行,则判断该行是否包含指定内容,如果包含则处理该行。
while ((line = reader.readLine()) != null) 将这段代码改为当读到倒数第二行时结束
要将这段代码改为当读到倒数第二行时结束,可以使用一个计数器变量来记录读取的行数,并在读取到倒数第二行时退出循环。以下是一个例子:
```java
try {
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line = null;
int count = 0;
while ((line = reader.readLine()) != null) {
count++;
if (count == getTotalLines("example.txt") - 1) {
break;
}
// 处理每一行的内容
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 获取文件总行数的方法
public static int getTotalLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
String line = null;
while ((line = reader.readLine()) != null) {}
int totalLines = reader.getLineNumber();
reader.close();
return totalLines;
}
```
在上述代码中,使用一个计数器变量count来记录读取的行数,如果count等于总行数减1,即读取到倒数第二行时,就跳出循环。getTotalLines()方法用来获取文件的总行数,可以先读取一遍文件并计算行数,然后关闭流并返回行数。