`
Xgeeeeek
  • 浏览: 22384 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

通过判断readline是否为null来判断文件读取已经到达末尾不准确,平台间结果不一致

    博客分类:
  • java
阅读更多

[2013/4/11]发现了一个问题,如果仅仅通过判断BufferedReader的readline方法返回的是否为null,来间接判断文件读取是否到达末尾不太准确,原因是,如果在文件的末尾多打了两个回车以上(包括两个),那么程序就会报错,代码如下:

 

BufferedReader reader = new BufferedReader(new FileReader((new File("D:\\media\\workspace\\song.txt"))));
		String line;
		while ((line = reader.readLine()) != null) {
			addSong(line);
		}

 读取的文件如下:

 

never/jack
rainbow/wm
basdf/eef
amen/sdf
[此处为回车]
[此处为回车]
..
..

 通过调试发现,如果文件末尾存在两个以上的回车,那么readline()方法最后读取的是“”而不是null,解决方法是加入对空字符串的判断,代码如下:

 

BufferedReader reader = new BufferedReader(new FileReader((new File("D:\\media\\workspace\\song.txt"))));
		String line;
		while ((line = reader.readLine()) != null && line.length() > 0) {
			addSong(line);
		}

 欢迎拍砖。

 

 

 

[2013/4/12]今天无意中在linux环境下试了一下上边的代码,发现在linux上回车也算作文件的一部分,即最后一个回车算作文件的结尾,这可能是平台不一样导致的。

分享到:
评论

相关推荐

    c#中文本文件的读取

    通过以上内容,你可以了解到C#中如何读取文本文件,以及如何判断文件是否已被打开。在实际应用中,根据具体需求选择合适的方法,并确保对可能出现的异常进行妥善处理,可以有效地提高代码的质量和稳定性。

    Java字节流数据逐行读取(readLine)

    在这个例子中,我们首先创建一个`FileInputStream`对象来读取文件,然后通过`InputStreamReader`将字节流转换为字符流,并指定字符编码(这里默认为UTF-8,因为大部分现代系统都使用这个编码)。接着,我们用`...

    java 按顺序读取文件

    在上述代码中,`BufferedReader`的`readLine()`方法用于按顺序读取文件内容,直到文件末尾。如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`...

    C#文件流读取CSV文件

    这里的`ReadLine`方法会返回文件中的下一行,直到文件末尾。 4. **处理Excel数据**: 虽然标题提到的是“文件流读取CSV文件”,但你提到了“EXCEL”。在某些情况下,可能需要将CSV数据与Excel工作表进行交互。...

    C#读取TXT文件

    3. **检查是否到达文件末尾**:如果`sr.ReadLine()`返回`null`,则表示已经读取到了文件末尾。 4. **读取并处理每行数据**:每次循环都会读取一行,并存储到变量`str`中。虽然原始代码没有给出具体的处理逻辑,但...

    Java基于IO流读取文件的方法

    如果返回`null`,表示已到达文件末尾。内容会被添加到`StringBuffer`对象`sb`中,以便后续处理。 最后,将`StringBuffer`转换为`String`对象,然后打印出来。`String bb = sb.toString(); System.out.println(bb);`...

    文件读取(关于C##)

    - 使用ReadLine方法逐行读取文件,直到遇到null表示文件末尾。 - 读取完成后,记得调用Close或Dispose释放资源。 4. 使用File类的静态方法读取文件: - File.ReadAllText:一次性读取整个文件为字符串。 - File...

    JAVA读取文件——以行为单位读取

    `BufferedReader`提供了`readLine()`方法,用于逐行读取文件内容,直到文件末尾(返回null)。 注意,这里使用了Java 7的try-with-resources语句,它可以自动关闭`BufferedReader`,避免资源泄露。如果运行环境中...

    有关文件内容的读取 BufferedReader

    如果到达文件末尾,则返回`null`。在给定的代码中,这个过程在一个循环中执行,直到没有更多行可读: ```java String line; while ((line = reader.readLine()) != null) { buffer.append(line); buffer.append(...

    用C#读取txt文件的方法

    在上面的代码中,我们首先创建了一个`StreamReader`对象来打开名为`example.txt`的文件,然后逐行读取文件内容,并将每行内容输出到控制台。最后,`using`语句确保了在文件读取完毕之后,`StreamReader`对象被正确...

    java中br.readLine与br.read的区别.doc

    如果已经到达流的末尾,则返回 null。readLine() 方法可以识别换行符、回车符或回车符后跟着换行符等多种行终止符。 在上面的测试代码中,我们使用了 readLine() 方法来读取文件中的内容。从输出结果可以看到,每次...

    java读取TXT文件入库

    在Java编程中,读取TXT文件并将其内容存入数据库是一项常见的任务,特别是在数据处理、日志分析或者导入批量数据的场景下。以下是一个详细的知识点解析,涵盖了如何使用Java来实现这一操作。 1. **读取TXT文件** -...

    streamReader读取文件

    它返回读取的行作为字符串,如果到达文件末尾则返回`null`。 3. **`ReadToEnd`方法:** `ReadToEnd`方法读取文件的剩余部分直到结束,并将所有文本作为单个字符串返回。 ### 四、关闭`StreamReader` 在完成文件...

    java 读取txt Demo

    这个方法会返回当前行的字符串,如果到达文件末尾,则返回null。 ```java String line; while ((line = br.readLine()) != null) { System.out.println(line); } ``` 5. **关闭资源**:在读取完文件后,记得...

    java文本读取方法

    - **`BufferedReader#readLine()`方法:**用于读取一行内容,如果到达文件末尾则返回`null`。 #### 四、随机读取文件内容 随机读取文件内容指的是能够指定位置读取文件中的内容。这在处理大文件或者需要频繁跳转...

    Android读取TXT文件

    在Android平台上,开发人员经常需要处理各种文件,其中包括文本文件,如TXT文件。这些文件可能包含用户数据、日志信息或者其他应用程序需要解析的数据。本文将详细介绍如何在Android应用中读取TXT文件,并将其内容...

    java代码-BufferedReader()总的readLine()函数,注意不需要强制类型转换读取值,用比较字符转函数equals();判断取值是否符合结束条件。

    我们将不涉及强制类型转换,而是使用`equals()`方法来比较字符串,并讨论如何通过此方法判断读取到的内容是否符合结束条件。 `BufferedReader`是`Reader`类的子类,它提供了一种高效且灵活的方式来读取字符数据。在...

    C#逐行读取文件的方法

    在C#编程语言中,处理文件是常见的任务之一,尤其是当需要处理大量数据时,逐行读取文件显得尤为重要。这种做法可以有效地节省内存资源,避免一次性加载整个文件导致的性能问题。本篇将深入探讨如何使用C#来逐行读取...

    Java 文件分行读取小程序

    此外,通过这个练习,学生还能了解到异常处理的重要性,因为文件操作经常可能会遇到如文件不存在或权限不足等问题,需要通过`try-catch`块来捕获和处理这些异常。 总的来说,理解和掌握Java中的文件操作,特别是像`...

    java读取txt文件

    - `readLine()`:读取一行数据,如果到达文件末尾,则返回`null`。 - `split(",")`:将读取的每一行数据按照逗号分割成字符串数组。 - **异常处理**:通过`throws IOException`声明可能抛出的异常类型,避免了在方法...

Global site tag (gtag.js) - Google Analytics