字符输入流

博客主要介绍了Java输入流java.io.Reader,包括BufferReader、InputStreamReader、FileReader和CharArrayReader。详细说明了BufferReader贯穿File、InputStream、InputStreamReader三个类的使用步骤,还提及InputStreamReader的顺序及FileReader是其子类,以及CharArrayReader将char数组以字符流读入内存。

输入流 java.io.Reader

BufferReader

 主要是使用readLine()方法;用BuferReader来包装输出;增加读取或写入的速度;这里是增加写入的速度 

贯穿了File InputStream InputStreamReader三个类的使用
功能: 字符输入中缓存文本
步骤:
1. File file=new File(“要读取的文本.txt”);//字符流一般读取文档
2. InputStream ips=new InputStream(file);//从文件中读取字节流
3. Reader reader =new InputStreamReader(ips);//将字节流读入到字符流reader中
4. BufferedReader buffer =new BufferReader(reader);//把字符流存到缓存区
5. 输出到控制台;一般都是把内存中的内容输出到控制集台。

package 字符流;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

//从字符输入流缓存文本
//效率高
/*
 * 
 * 
 * 
 * */
public class BufferReaderTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//构造中放字符流
		File file =new File("ojbk.txt");
		file.createNewFile();
		InputStream ips =new FileInputStream(file);
	
		Reader reader=new InputStreamReader(ips);
		BufferedReader buffer=new  BufferedReader(reader);
		String ss=buffer.readLine();//为了增加读取效率  依次读取一行  最后一行是
		System.out.println(ss);
		String str=null;
		while((str=buffer.readLine())!=null) {
			System.out.println(str);
		}
		buffer.close();
		
		/*read()
		 * close
		 * read(char[] c, int offaet, int len)
		 * readLine()
		 * */

	}
	//应用场景’、
	/*
	 *   字节流一般读取多媒体文件 MP3 MP4 JpG  因为都是二进制存储
	 *    字符流 一般读取的是文本
	 *    
	 * 
	 * */

}

InputStreamReader

package 字符流;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

//是字节和字符的桥
//读取字节 转为字符  并指定字符集解码
/*
 * 包装字节流   称字符
 * 
 * */
public class InputStreamReaderTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File file =new File("笔记");
		InputStream ips=new FileInputStream(file);
		InputStreamReader reader=new InputStreamReader(ips);
		int a=0;
		while((a=reader.read())!=-1) {
			System.out.println((char)a);
		}
		/*
		 * reader.getEncoding();
		 * 
		 * */

	}

}

FileReader

FileInputStreamReader的子类
顺序:
1.java.io.Reader
2.java.io.InputStreamReader
3.java.io.FileReader

package 字符流;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

//用于都文本
//可以直接串文件
public class FileReaderTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File file =new File("笔记");
		InputStreamReader reader=new FileReader(file);
		//bixu包装才能用readLine()
		BufferedReader br =new BufferedReader(reader);
		//这个减少了两个对象的创建 直接将文件转化为字符  少了字节掉文件的几步
		

	}

}

CharArrayReader

读取char数组以字符流的形式读入到内存中

package 字符流;

import java.io.CharArrayReader;
import java.io.IOException;
import java.io.Reader;

public class CharArrayTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String str ="HelloWolrd";
		char [] buf=str.toCharArray();
		Reader reader =new CharArrayReader(buf);//字符串缓存区 可做字符输入流   buf存储到 reader中  Reader是父类
		int read=reader.read();
		int a=0;
		while((a=reader.read())!=-1) {
			System.out.println((char)a);
		}
		char cc [] =new char[buf.length];//创建一个新数组
		int reads=reader.read(cc, 0, buf.length);//饭hi中类型是int   及读取的个数   没啥用
		reader.close();

	} 

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值