字节流与字符流

本文详细介绍了Java中的字符流(如FileReader,FileWriter,BufferedReader)和字节流(如FileInputStream,FileOutputStream,BufferedInputStream等)的使用方法,包括基本操作、储存和输出,以及处理流的概念和应用实例。
摘要由CSDN通过智能技术生成

字符流

字符流初步调用

FileReader reader = new FileReader("E:/a.txt");

System.out.println((char)reader.read());

System.out.println((char)reader.read());

基本的使用

FileReader reader = new FileReader("E:/a.txt");

FileWriter writer = new FileWriter("E:/c.txt");

char[] chars = new char[10];//通过指定长度进行输出

int size = 0;

while ((size=reader.read(chars))!=-1){

System.out.println(Arrays.toString(chars));

writer.write(chars,0,size);

}

reader.close();

writer.close();

}

储存和输出

FileReader fileReader = new FileReader("E:/a.txt");

BufferedReader bufferedReader = new BufferedReader(fileReader);

//输出时,保留文件中已经存在内容,将新内容追加原有内容的后面

FileWriter writer = new FileWriter("E:/b.txt",true);

BufferedWriter bufferedWriter = new BufferedWriter(writer);

String line = null; //一次可以读入一行数据, 读完返回null

while ((line = bufferedReader.readLine())!=null){

bufferedWriter.write(line);//一次向外输出一个字符串

bufferedWriter.newLine();//插入一个换行符

}

bufferedReader.close();

bufferedWriter.flush();

bufferedWriter.close();

}

}

字节流

字节流基本的使用

//创建一个输入流对象

FileInputStream in = new FileInputStream("E:/a.txt");

FileOutputStream out = new FileOutputStream("E:/b.txt");//输出流会自动创建文件

System.out.println(in.read());//97 每read一次 返回一个字节编码

System.out.println(in.read());//98

System.out.println(in.read());//99

System.out.println(in.read());//100

System.out.println(in.read());//-1 当文件内容读完了以后,返回-1

通过字节流对文件的进行输出(输出为byte型)

//创建一个输入流对象

FileInputStream in = new FileInputStream("E:/baidu.png");

FileOutputStream out = new FileOutputStream("E:/baidu1.png");//输出流会自动创建文件

/*

int read() 默认一次读一个字节,返回的是读到的字节编码 效率低.

int read(byte[] b) 默认一次读一个指定大小的byte数组个字节, 返回的是数组中一次实际装入的字节个数

两个方法相同之处都是读完后返回-1;

*/

byte[] bytes = new byte[100];

int size = 0;

while ((size = in.read(bytes))!=-1){

out.write(bytes,0,size);

}

//关闭流对文件的占用

in.close();

out.close();

}

用处理流进包装

节点流和处理流的概念

● 节点流:
如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,
则称为节点流。
● 处理流:
如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能,
提高读写效率,同时增加了一些新的方法
 

代码对字节流进行包装
 

//创建一个输入流对象

FileInputStream in = new FileInputStream("E:/baidu.png");//节点流,直接包含文件(数据)

BufferedInputStream bin = new BufferedInputStream(in);//处理流 -->带缓冲功能的流

FileOutputStream out = new FileOutputStream("E:/baidu1.png");

BufferedOutputStream bout = new BufferedOutputStream(out,2048);

byte[] bytes = new byte[2049];

int size = 0;

while ((size = bin.read(bytes))!=-1){

bout.write(bytes,0,size);

}

bin.close();

bout.flush();//刷新缓冲区

bout.close();

通过字节流用代码向文件输入指定字符串

//数据输入输出流

/* String s = "你好";

FileOutputStream out = new FileOutputStream("");

out.write(s.getBytes());//实际向外发送时,需要转为byte数组

FileInputStream in = new FileInputStream("");

byte [] bytes = new byte[100];

int size = in.read(bytes);//对方接收到之后,拿到的也是byte数组

String str = new String(bytes,0,size);*/

String s = "你好";

FileOutputStream out = new FileOutputStream("E:/msg.txt");

DataOutputStream dout= new DataOutputStream(out);

dout.writeUTF(s);//将字符串直接写出. 但是底层转为字节数组

FileInputStream in = new FileInputStream("E:/msg.txt");

DataInputStream din = new DataInputStream(in);

String str = din.readUTF();//直接可以读到一个字符串, 在底层将读到字节数组转为字符串

System.out.println(str);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值