Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回.txt文件中的行数_Java_Methods_Return - Fatal编程技术网

Java 返回.txt文件中的行数

Java 返回.txt文件中的行数,java,methods,return,Java,Methods,Return,这是我在这里的第一个问题,所以我会尽可能地澄清 我有一个像这样的句子.txt文件: 加拉塔萨雷昨晚1-0击败尤文图斯 我要去任何你找不到我的地方 木瓜真好吃 该死的演讲者从来不会给超过70个 你在想什么 很明显,这里有5个句子,我的目标是编写一个listSize方法,返回这里列出的句子数 public int listSize() { // the code is supposed to be here. return sentence_total;} 非常感谢您的帮助。要读取文件并计算其行

这是我在这里的第一个问题,所以我会尽可能地澄清

我有一个像这样的句子.txt文件:

加拉塔萨雷昨晚1-0击败尤文图斯

我要去任何你找不到我的地方

木瓜真好吃

该死的演讲者从来不会给超过70个

你在想什么

很明显,这里有5个句子,我的目标是编写一个listSize方法,返回这里列出的句子数

public int listSize()
{
// the code is supposed to be here.

return sentence_total;}

非常感谢您的帮助。

要读取文件并计算其行数,请使用插入
文件读取器上的
java.io.LineNumberReader
。对它调用
readLine()
,直到它返回
null
,然后
getLineNumber()
以知道最后一个行号,就完成了

或者(Java 7+),您可以使用NIO2
Files
类立即将文件完全读取到
列表中,然后返回该列表的大小


顺便说一句,我不明白为什么您的方法将
int
作为一个参数,它应该是要计算并返回的值?

使用以下代码获取该文件中的行数

    try {
        File file = new File("filePath");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        int totalLines = 0;
        while((line = reader.readLine()) != null) {
            totalLines++;
        }
        reader.close();
        System.out.println(totalLines);
    } catch (Exception ex) {
        ex.printStackTrace(System.err);
    }
你可以做:

Path file = Paths.getPath("route/to/myFile.txt");
int numLines = Files.readAllLlines(file).size();
如果要限制它们或懒散地处理它们:

Path file = Paths.getPath("route/to/myFile.txt");
int numLines = Files.llines(file).limit(maxLines).collect(Collectors.counting...);
使用:


尝试这种方法,这样你就可以在路上学到一些东西,而不是抄袭其他方法。我的目的是将int参数作为句子数返回。如果这是错误的,我愿意在理解了我应该做的事情后更改它。如果是基元类型,则您接受作为参数的
int
。您可以在方法内部本地更改其值,但该更改对方法调用方之后将不可见,因为Java参数是按值传递的(即,您在方法内部看到的参数是调用方传递的变量的副本)。使用
Files.readAllLines()
的问题是,它会将所有行读入内存;这可能是合适的,也可能不是。但是对于如此短的文件,性能不会成为问题,并且在方法返回时将立即收集字符串列表。或者,使用转义分析,它也可能根本不被JVM实例化。但总的来说,你是对的,知道我提到的两种解决方案之间的区别很重要。我在这里只看到5句话。哎呀!请立即更正。在发布问题之前,您是否可以对您的方法多做一些陈述,并让我们知道您的想法方向?在提出此问题之前,您尝试了哪些方法。你能展示一些我们可以帮助我改进的代码吗?我很困惑,什么都做不了这是填鸭式的。你应该避免这种情况。在理解它的编写原因之前,我不会从这里得到任何信息,所以不用担心。是的,但是第二个版本也一样?不,第二个版本不会将所有内容加载到内存中。流是惰性填充的;)
LineNumberReader  reader = new LineNumberReader(new FileReader(new File("sentences.txt")));
reader.skip(Long.MAX_VALUE);
System.out.println(reader.getLineNumber() + 1); // +1 because line index starts at 0
reader.close();