黑马程序员——字节流和字符流
来源:互联网 发布:c语言swap是什么意思 编辑:程序博客网 时间:2024/04/29 23:36
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
java.io 通过数据流,序列化的文件系统提供系统输入和输出
按数据传输单位可以分为
字节流:以字节为单位传输的数据流,在字节流中输入输出数据主要使用OutputStream和InputStream完成
字符流:以字符为单位传输的数据流,在字符流中主要使用Writer类和Reader类完成
OutputStream,InputSteam,Reader,Writer,都是抽象类,一个字符占两个字节,字节流主要处理字节或二进制对象,字符流主要用来处理字符和字符串。字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,对多国语言支持性比较好!
所有文件的储存都是以字节的形式储存在磁盘上的,字符流要先转变成字节,在储存到磁盘上。对于关于文字的用字符流比较好,其他的用字节流。
字节流可用于任何类型的对象,而字符流只能处理字符或者字符串。
字符流和字节流是通过,InputSteamReader,OutputStreamWriter来关联的
实际开发中出现的汉字问题实际上都是字节流和字符流之间转化不同意而造成的
文件的操作流程:
1.使用File类打开一个文件
2.通过自己饿流或字符流的子类,指定输出的位置
3.进行读写操作
4.关闭输入输出操作(io操作输出资源操作,一定要记得关闭)
io异常处理:
打开,读写和关闭都要进行异常处理。一般需要两个try{}catch{}块,在最后关闭处理的时候要先判断流是否为空
package test;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class Test7 {public static void main(String[] args)throws IOException {//字节流文件写入操作FileOutputStream out = null;OutputStreamWriter writer = null;try {out = new FileOutputStream("OutputStream.txt");writer = new OutputStreamWriter(out);//字节流转换为字符流String s = "hello world 字节流";//字符writer.write(s);} catch (Exception e) {e.printStackTrace();}finally{try {if(writer!=null)writer.close();if(out!=null)out.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//字节流文件续写try {out = new FileOutputStream("OutputStream.txt",true);writer = new OutputStreamWriter(out);//字节流转换为字符流String s2 = " 续写文件";//字符writer.write(s2);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(writer!=null)writer.close();if(out!=null)out.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//字节流文件读取操作FileInputStream in = null;InputStreamReader reader = null;try {in = new FileInputStream("OutputStream.txt");reader = new InputStreamReader(in);//字节流转换为字符流char[] buf = new char[1024];//大小为1024最String str="";while(reader.read(buf)!=-1){str = str+new String(buf);}System.out.println(str);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(reader!=null)reader.close();if(in!=null)in.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//字符流文件写入操作FileWriter fw = null;try {fw = new FileWriter("writer.txt");fw.write("hello world 字符流");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(fw != null)fw.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//字符流文件续写try {fw = new FileWriter("writer.txt",true);fw.write(" 续写文件");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(fw != null)fw.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//字符流文件读取操作FileReader fr = null;try {fr = new FileReader("writer.txt");char[] buff = new char[1024];String stri = "";while (fr.read(buff)!=-1) {stri = stri+new String(buff);}System.out.println(stri);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(fr!=null)fr.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
修正:在上面字节流转换为字符流然后对文件进行操作的代码中,在最后关闭流的操作应该只关闭字符流就可以了,
OutputStreamWriter.close()会在内部调用OutputStream.close();
- 黑马程序员——字节流和字符流
- 黑马程序员——字节流和字符流
- 黑马程序员——IO流-字节流、字符流
- 黑马程序员—IO流(字符流与字节流)
- 黑马程序员——IO字符流与字节流
- 黑马程序员——字符流,字节流
- 黑马程序员——第十二篇:字节流、字符流
- 黑马程序员——java IO流中的字节流和字符流
- 黑马程序员——Java基础------IO流之字符流、字节流和缓冲区。
- 黑马程序员——基础篇——关于字节流和字符流的区别
- 《黑马程序员》 字符流和字节流 -----第十八天
- 黑马程序员 字节流和字符流缓冲区的对比
- 黑马程序员_IO(字符流和字节流)
- 黑马程序员---Java基础---字节流和字符流
- 黑马程序员_字节流和字符流
- 黑马程序员:字符流与字节流
- 黑马程序员---字符流,字节流
- 黑马程序员——Java语言基础——07.IO流(1)字符流和字节流
- 控制台应用
- XML学习笔记(2)
- 使用ToCharArray函数
- linux中fork()函数详解
- IOS-UILabel自适应解决方案
- 黑马程序员——字节流和字符流
- ubuntu下运行jar界面程序出现乱码
- Android应用程序资源的编译和打包过程分析
- Java泛型
- 【原创】C程序设计语言(2版KR) - C语言基础知识(2)
- IOS之同步请求、异步请求、GET请求、POST请求(整理复习))
- ZeroMemory()
- jquery
- 可浪费空间空间的了扣扣的几乎将速度快叫库房尽快是的