我找不到解释,而我发现我不确定。所以请确认我的疑惑:
我正在使用while循环读取文件,如果文件中的行为空,则跳过并转到下一行。我只是想确保我使用的代码对于我刚才描述的内容是正确的:
while((strLine = reader.readLine())!= null) <----- While loop that is suppose to read Line by Line
{
if (strLine.isEmpty() == false) <----- Check for empty Line
{
/** My Code **/
}
else
{
/** My Code **/
}
}
答案 0 :(得分:1)
是肯定的。它会正常工作。
while(/* While scanner has next line */)
{
line = scanner.nextLine();
if( /* line is not equal to null */) {
/* perform code */
}
}
答案 1 :(得分:1)
是的!你在做什么是你想做的。你知道,你可以自己尝试编译它。试错。如果您无法弄清楚如何使用阅读器,正如其他答案所提出的那样,请转到:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Trial {
public static void main(String[] args) throws IOException {
String strLine;
BufferedReader reader = new BufferedReader(new FileReader(
"/home/user234/folder1/filename"));
while ((strLine = reader.readLine()) != null) {
if (!strLine.isEmpty()) {
System.out.println("notEMPTY");
} else {
System.out.println("EMPTY");
}
}
}
}
答案 2 :(得分:0)
Java Reader
没有readline()
方法。
如果要对令牌进行特定解析,则应使用Scanner
。 Scanner
有一个nextLine()
方法来获取每一行,但如果没有下一行则抛出异常。因此,您应该使用Scanner.hasNextLine()
作为您的条件。
Scanner s = new Scanner("filename.txt");
String line;
while(s.hasNextLine()){ // check for next line
line = s.nextLine(); // get next line
if(line == ""){ // check if line is empty
System.out.println("Empty");
} else {
System.out.println("Not Empty:" + line);
}
}
编辑: BufferedReader
确实有readline()
方法,正如@natsirun所使用的那样。虽然对于任何文件解析比读取行更复杂,但prefer the Scanner
。
答案 3 :(得分:0)
上述代码中显示的逻辑对您所描述的内容有意义。它应该表现你想要的。