IO流

 

字节流:图片、视频

抽象基类:InputStream, OutputStream

----------------------

字符流:文本数据

可以指定哪种编码表。

抽象基类:Reader,Writer

----------------------

编码表

ASCII

GB2312->扩容->GBK->扩展GB18030

国际标准码表:Unicode表->优化->UTF-8,2个字节表示,16个二进制位。

----------------------

一、学习一下字符流的特点

数据最常见的形式是文件

FileWriter

创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的对象。会抛出异常。

FileWriter fw = new FileWriter(“test.txt”);

fw.write(“abce”);

-----------------------

写入方式一:

fw.flush();

fw.write(“bce”);

fw.flush();

-----------------------

写入方式二:

fw.close();//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。将数据刷到目的地中。

---------------------------

和flush()的区别:

1.flush刷新后,流可以继续使用

2.close刷新后,会将流关闭

 

IO异常的处理方式

FileWriter fw = null;

try{

        fw = new FileWriter(“demo.text”);

}catch(IOException e){

        sysout();

}finally{

        try{

              if(fw!=null)

                      fw.close();

}catch(){

       sysout();

}

        

}

----------------------------------

//true参数,代表,不覆盖已有的文件,并在已有文件的末尾处,进行数据的续写

FileWriter fw = new FileWriter(“demo.txt”,true);

fw.write(“hh”);

--------------------------------------

FileReader fr = new FileReader(“demo.txt”);

int ch1 = fr.read();

 

----------------------------

int ch = 0;

while((ch=fr.read())!= -1)

sysout();

----------------------

while(true)

{

int ch = fr.read();

if(ch ==01)

        break;

sysout((char)ch);

}

如果到结尾,就返回-1

 

--------------------------

缓冲区可以提高流的操作效率,在创建缓冲区之前,必须先有流对象。

//创建一个字符写入流对象

FileWriter fw = new FileWriter(“buf.txt”);

//为了提高字符写入流的效率,加入缓冲技术

//只需要将需要被提高效率的流对象,传递给缓冲区的构造函数即可。

BufferedWriter bufw = new BufferedWriter(fw);

bufw.write(“abcde”);

//只要用到缓冲区,记得刷新。

bufw.flush();

 

bufw.close();//关闭缓冲区,就是关闭缓冲区中的流对象,所以这句可以省略不写。

---------------------------

newLine();  跨平台换行符。代替了\r\n。

------------------------------

读取缓冲区

BufferedReader类

从字符输入流中读取文本,缓冲各个字符。

---

//创建一个读取流对象和文件相关联。

FileReader fr = new FileReader(“buf.txt”);

//为了提高效率,加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。

BufferredReader bufr = new BufferedReader(fr);

 

String s1 = bufr.readLine();

System.out.prinltn(“s1:” + s1);

bufr.close();

你可能感兴趣的:(IO流)