gpt4 book ai didi

java - FileReader.read()何时返回-1以及如何处理?

转载 作者:行者123 更新时间:2023-11-30 02:18:55 26 4
gpt4 key购买 nike

  1. 来自 https://docs.oracle.com/javase/8/docs/api/?java/io/FileReader.html

    public int read(char[] cbuf) throws IOException

    Reads characters into an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.

    Parameters: cbuf - Destination buffer

    Returns: The number of characters read, or -1 if the end of the stream has been reached

    Throws: IOException - If an I/O error occurs

    “已到达流末尾”是什么意思?

    当完成读取文件中的数据时,就是流的结尾到达?那么为什么read返回读取的字符数,而不是-1?

  2. read返回-1时,我该如何处理?我的关注者代码没有检查和处理,我猜这是不合适的。

    File file = new File("Char.txt");                                

    try(FileReader fr = new FileReader(file)){
    int[] input = new int[100];
    char[] str = new char[(int) file.length()];
    fr.read(str);

    } catch (IOException e){
    System.err.println(e);
    }

最佳答案

您的阅读器 (FileReader) 提供读取字符的方法,但底层是某种形式的 InputStream 提供字符序列>字节。当无法读取更多字节时(当到达文件末尾时),您将返回 -1。

如果您的阅读器读取字符序列,您将获得该数量的字符。如果所有字符都已读取,您将得到 -1。例如如果它以 8 个 block 为单位读取 30 个字符序列,您可以从 read() 获得以下结果:8, 8, 8, 6, -1。您会注意到,您读完了全部 30 个字符 (8+8+8+6),然后得到了流结束指示符。

关于java - FileReader.read()何时返回-1以及如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com