JAVA——缓冲流(字符流 read方法)

package com.cskaoyan.io02.tranfer.reader;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

/**
* @author zhangshuai@Cskaoyan.onaliyun.com.
* @version 1.0
* Reader中定义的3个read方法
*
* public int read()
* 读取单个字符
* 返回:
作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1

public int read(char[] cbuf)
将字符读入数组
返回:
读取的字符数,如果已到达流的末尾,则返回 -1

public int read(char[] cbuf,int off ,int len)
将字符读入数组的某一部分
返回:
读取的字符数,如果已到达流的末尾,则返回 -1

*/
public class Demo2 {

public static void main(String[] args) throws IOException {
// 1. 创建字符输入流对象
FileInputStream fos = new FileInputStream("a.txt");
Reader reader = new InputStreamReader(fos);


// 1. 一次读取一个字符
//int readChar;
//
//while ((readChar = reader.read()) != -1) {
// char c = (char) readChar;
// System.out.print(c);
//}

// 2. 一次读取一个字节数组 public int read(char[] cbuf)
//int len; // 记录本次实际读取的字符个数
//char[] charBuf = new char[1024];
//
//while ((len = reader.read(charBuf)) != -1) {
// String s = new String(charBuf, 0, len);
// System.out.println(s);
//}
//
// 3. public int read(char[] cbuf,int off ,int len)
int len; // 记录本次实际读取的字符个数
char[] charBuf = new char[1024];

int offset = 5;
while ((len = reader.read(charBuf, offset, charBuf.length - offset)) != -1) {
String s = new String(charBuf, offset, len);
System.out.println(s);
}


// 关闭流
reader.close();



}

}
posted @ 2020-09-02 17:45  LY心情笔记  阅读(419)  评论(0)    收藏  举报