Java I/O系统-BufferedReader读操作
- BufferedReader
该类继承自Reader类,主要从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。BufferedReader就是一个装饰器,它和其自雷负责装饰其他Reader对象。
两个构造函数:
BufferedReader(Reader in)
:创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
:创建一个使用指定大小输入缓冲区的缓冲字符输入流,大多数情况下,默认值就足够大了。
下面是关于此类如何读取文件的一些常用方法:
1 public class IOStreamDemo { 2 public static void readFileByBufferedReader(String path) throws IOException { 3 /* 4 * 定义Reader对象,直接调用该reader对象的read()方法逐个读取字符 5 */ 6 Reader read1 = new FileReader(path); 7 // int count = 0; 可以定义count变量统计字符个数 8 int ch1 = 0; // 存放读取的字符 9 /* 10 * read()返回值作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1 11 */ 12 while ((ch1 = read1.read()) != -1) { 13 // count++; 14 // System.out.print((char) ch1); 15 } 16 read1.close(); 17 18 /* 19 * 利用BufferedReader进行文件的读操作,逐个字符读取 20 */ 21 BufferedReader bufReader1 = new BufferedReader(new FileReader(path)); 22 int ch2 = 0; 23 StringBuffer strBuffer = new StringBuffer(); 24 25 while ((ch2 = bufReader1.read()) != -1) { 26 strBuffer.append((char) ch2); 27 // strBuffer.append("\n"); 28 } 29 bufReader1.close(); 30 // System.out.println(strBuffer); 31 32 /* 33 * 利用BufferedReader进行文件的读操作,每次读取1024个字符,并将读取的字符放入cbuf2数组中 34 */ 35 BufferedReader bufReader2 = new BufferedReader(new FileReader(path)); 36 char[] cbuf2 = new char[1024]; 37 int readLen2 = bufReader2.read(cbuf2); 38 while (true) { 39 if (readLen2 == -1) { 40 break; 41 } 42 for (int k = 0; k < readLen2; k++) { 43 // System.out.print(cbuf2[k]); 44 } 45 readLen2 = bufReader2.read(cbuf2); 46 } 47 bufReader2.close(); 48 49 /* 50 * 利用BufferedReader进行文件的读操作,每次读取1024个字符,并将读取的字符放入cbuf3数组中 51 */ 52 BufferedReader bufReader3 = new BufferedReader(new FileReader(path)); 53 int maxLen = 1024; 54 // 每次读取1024个字符 55 char[] cbuf3 = new char[maxLen]; 56 int readLen3 = bufReader3.read(cbuf3, 0, maxLen); 57 while (true) { 58 if (readLen3 == -1) { 59 break; 60 } 61 for (int k = 0; k < readLen3; k++) { 62 System.out.print(cbuf3[k]); 63 } 64 readLen3 = bufReader3.read(cbuf3, 0, maxLen); 65 } 66 bufReader3.close(); 67 68 /* 69 * 利用BufferedReader进行文件的读操作,逐行读取 70 */ 71 BufferedReader bufReader4 = new BufferedReader(new FileReader(path)); 72 String str; 73 // 逐行读取 74 while ((str = bufReader4.readLine()) != null) { 75 // System.out.println(str); 76 } 77 bufReader4.close(); 78 } 79 80 public static void main(String[] args) throws IOException { 81 readFileByBufferedReader("E:\\test\\uum.sql"); 82 } 83 }
利用BufferedReader读取控制台的标准输入:
// Reading standard input: BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter a line:"); System.out.println(stdin.readLine());
利用BufferedReader读文件的时候可能会遇到乱码,乱码的解决方案可如下代码
1 InputStreamReader isr= new InputStreamReader(new FileInputStream(file), "UTF-8"); 2 BufferedReader read = new BufferedReader(isr);
利用BufferedReader读取内存:
String str = "hello world"; StringReader in = new StringReader(str ); BufferedReader reader= new BufferedReader( in ); int c; try { while((c = reader.read()) != -1) System.out.print((char)c); } catch (IOException e) { e.printStackTrace(); }
以上是在学习中的代码练习,若有不对的地方欢迎大家指出。