java中read()和readline()方法对比

read方法:读取单个字符。 返回:作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1 ;

readLine方法:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

example:

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class T0517 {

public static void main(String[] args) {

FileReader input;try {

input = new FileReader("c:/a.txt");

BufferedReader br = new BufferedReader(input);

for (int i = 0; i < 10; i++) {

System.out.println("read=" + br.read());

// System.out.println("readline=" + br.readLine());}

} catch (FileNotFoundException e) {e.printStackTrace();}

catch (IOException e) {e.printStackTrace();}}

}

=================================

C盘根目录下放入文件a.txt 里面内容有3行

a

1

123

===========

使用read测试(直接执行代码

)

==================

read=97

read=13

read=10

read=49

read=13

read=10

read=49

read=50

read=51

read=-1说明:返回的数字是字符的char型码,97=[a] ;49=[1];50=[2];51=[3];13=[回车];10=[换行];-1=[文件到底下面没有内容就返回-1总结:read返回文件中所有内容的char型码===========

使用readline测试(代码中注释掉那句,并把read注释掉执行)

===========

readline=a

readline=1

readline=123

readline=null

readline=null

readline=null

readline=null

readline=null

readline=null

readline=null

说明:很明显是取文件中每一行的内容输出最后,两个方法因为返回值不同,所以基本不会换着用,readline比较多用,因为方便,read用的相对少,因为要得到可读的内容,需要转码.

版权声明:本文为博主原创文章,未经博主允许不得转载。

### 不同的Java快速读取模板 #### 使用Scanner类 `java.util.Scanner` 是一种用于解析基本数据类型的简单文本扫描器。它可以从 `InputStream`, `File`, 或者其他源中读取输入。 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String inputString = scanner.nextLine(); int number = scanner.nextInt(); System.out.println("Input string: " + inputString); System.out.println("Number entered: " + number); scanner.close(); // 关闭资源[^1] } } ``` #### BufferedReader InputStreamReader组合使用 这种方式通常更高效,因为 `BufferedReader` 提供缓冲功能来提高性能,并且可以逐行处理大文件而不会占用过多内存。 ```java import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception{ try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { String line; while ((line = br.readLine()) != null && !line.isEmpty()){ System.out.println(line); } } } } ``` #### DataInputStream 方式 当需要读取原始字节流并将其转换成相应的 Java 数据类型时可以选择此方法。不过需要注意的是该对象主要用于二进制数据而非纯文本字符串。 ```java import java.io.DataInputStream; import java.io.IOException; class GFG { public static void main(String args[])throws IOException{ DataInputStream dis=new DataInputStream(System.in); byte b[]=new byte[5]; System.out.print("Enter some text : "); dis.read(b,0,b.length); System.out.println("You have typed : "+new String(b)); dis.close(); //关闭资源[^2] } } ``` 以上三种都是常见的实现方案,在实际开发过程中可以根据具体需求选择最合适的那个。如果追求简洁易懂则推荐采用第一个例子中的 `Scanner`; 若注重效率尤其是面对大数据量场景下建议考虑第二个选项即基于 `BufferedReader` 的解决方案; 对于特定场合下的二进制数据操作,则可选用第三个实例提到的方法
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许进进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值