java字符文件流的输入,java文件输入输出IO之一流和字符流

Java流

流的概念

流代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。作用是为数据源和目的地建立一个输送通道。

字节流和字符流

1)字节流:数据流中最小的数据单位是字节,操作的是byte类型数据。

2)字符流:数据流中最小的数据单位是字符,Java中一个字符占两个字节。

1)输入流,程序从输入流中读取数据,不关心数据来自何处。

2)输出流,程序向输出流中写入数据,不关心目的地是何处。

流的特性

1)先进先出:最先写入的输出流最先被输入流读取到。

2)顺序存取

3)只读或只写:每个流只能是输入流或输出流中的一种。输入流只能读,输出流只能写。

字符流--其实还是字节流 fuck!:abstarct class Reader:

class BufferedReader:

calss InputStreamReader:

class FileReader

Writer:

BufferedWriter

OutputStreamWriter:

FileWriter

字节流:InputStream:

FileInputStream

FilterInputStream:

BufferedInputStream

OutputStream:

FileOutputStream

FilterOutputStream:

BufferedOutputStream

字符流读写

1.使用FileReader构造一个File实例给父类  InputStreamReader的构造器 ,构造器通过这个 File构造一个FileInputStream(只要是InputStream子类就阔以)  实际上就是在这儿从字节流处理成字符流的、、

InputStreamReader fr=new FileReader(new File("sdasd.sda"));

char[] cs=new char[10];

int n=fr.read(cs);

//如果读到最后没了,read方法会返回 -1//这是Reader提供的方法

//FileReader其实就是 通过 一个文件地址字符串或者File对象  给 InputStreamReader 构造、传入 了一个 InputStream 对象

//InputStreamReader和Reader 提供了  read(cs)方法

2.直接使用InputStreamReaderInputStreamReader isr=new InputStreamReader(aFileInputStreamOROtherInputStream);

//构造器要传入一个 字节流InputStream对象char[] cs=new char[20];

int n=isr.read(cs);

//还是使用FileRader的爷爷 InputStreamReader的爸爸的 read(cs)方法

3.使用缓冲字符流 BufferedReader

Buffered构造器要传入Reader的实例来构造,所以只能传入FileReader或者InputStreamReader实例。

而InputStreamReader构造时要传入一个 InputStream字节输入流实例。

3.1 read()/**

* Reads a single character.

*

* @return The character read, as an integer in the range

*         0 to 65535 (0x00-0xffff), or -1 if the

*         end of the stream has been reached

* @exception  IOException  If an I/O error occurs

*/

public int read() throws IOException {

3.2 read(cs) //结尾返回 -1 ,每次read返回读入的 字符数

3.3 readLine   //String readLine() 每次返回读取到的一行字符串,读完了 会返回 null

1.FileWriter

通过构造器 调用 父类OutputStreamWriter构造器,通过传入的File 构造一个FileOutputStream

FileWriter fw=new FileWriter(new File("sda.txt),true);//true表示文件尾追加

void write(String s)  //(s,begin,end)

void write(cahr[] cs) //(cs,begin,end)

void write(int c)//char(c)

//Writer类中     abstract public void write(char cbuf[], int off, int len) throws IOException;

//flush() 都是立即将字符写入文件,还可以继续写。但close后就不可以写了

//close()//必须关闭

2.OutputStreamWriter

需要通过一个OutputStream来构造.//FileOutputStream提供的可追加构造器OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(f,true));

3.BufferedWriter

需要一个Writer实例来构造。所以只能传入OutputStreamWriter或者子类FileWriter实例。void new line();//仅换行

void bw.write("hello a")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值