java - 在 Java 中,我如何使用这个 countLines 方法来计算没有换行符的行?

标签 java

以下代码计算文本文件中的行数,但如果有一行没有换行符 ('\n'),则不会计算它们:

public static int countLines(String filename) throws IOException {
    InputStream is = new BufferedInputStream(new FileInputStream(filename));


try {
    byte[] c = new byte[1024];
    int count = 0;
    int readChars = 0;
    boolean empty = true;
    while ((readChars = is.read(c)) != -1) {
        empty = false;
        for (int i = 0; i < readChars; ++i) {
            if (c[i] == '\n'   /*  || c[i] != null  */ ) {
                ++count;
            }
        }
    }
    return (count == 0 && !empty) ? 1 : count;
} finally {
    is.close();
}

当我尝试将代码 c[i] != null 添加到 if 条件中时,它给出了这个错误:

NewParentClass.java:72: error: incomparable types: byte and ''

    if (c[i] == '\n'    || c[i] != null  ) {

最佳答案

BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
int lines = 0;
while (reader.readLine() != null) lines++;
reader.close();

关于java - 在 Java 中,我如何使用这个 countLines 方法来计算没有换行符的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830298/

相关文章:

Java反编译和JNI

java - Fragment.java 错误 :(94, 51) 错误:不兼容的类型:NewsFragment 无法转换为 Context

Java HttpClient 或 PostMethod 将返回数据截断为 64k

java - 在Android中实现发布/订阅

java - 蜂窝数据上的 WebRTC 连接失败

java - 在运行时从另一个类中调用 JPanel

java - 销毁或压低后,房间数据将无法持久保存,并重新回到 Activity 中

java - 计数变量没有增加 Java

java - 在 ejb 中使用 spring

java - 当触摸在外部时 AlertDialog 消失 [Android]