IO流

2017-11-15  本文已影响0人  woochen123

1.流 stream

java对文本的读和写是通过输入流和输出流来完成的。
输出流:OutputStream

//读写规范
//为了得到正确的变量作用域,在try外声明流变量
FileOutputStream fos = null;
byte[] buf = new byte[2048];
   try {
            //在try块内完成初始化
            fos = new FileOutputStream(file);
       while ((len = is.read(buf)) != -1) {
                fos.write(buf, 0, len);
            }
            fos.flush();
        } finally {
            try {
                //为了避免空指针异常
                if (fos != null) 
                //释放资源(文件句柄,网络端口,其他资源)
                fos.close();
            } catch (IOException e) {
              //忽略或者记录为日志
            }
        }
//在java7之后引入了“带资源的try”构造,不需要在try声明变量;也不需要finally子句,java会对所有AutoCloseable对象自动调用close(),所以
 try {
            //在try块内完成初始化
            FileOutputStream fos = new FileOutputStream(file);
            fos.flush();
        }catch(IOException ex){
             System.err.println(ex.getMessage());
        }

输入流:InputStream

InputStream is = new FileInputStream();
byte[] b = new byte[1024];
int read = is.read(b);

//补充方法
public void mark(int readAheadLimit);  //给输入流设置标记
public void reset() throws IOException;  //将输入流重置到标记处,可以从标记处开始读取
public boolean markSupport();  //判断当前输入流流是否支持标记

2.缓冲流(BufferedStream)

public BufferedInputStream(InputStream inputStram);
public BufferedInputStream(InputStream inputStram,int bufferSize);
public BufferedOutputStream(OutputStream outputStram);
public BufferedOutputStream(OutputStream outputStram,int bufferSize);

3.过滤器输出流(PrintStram)

public PrintStram(OutputStram outputStrem);
public PrintStram(OutputStram outputStrem,boolean autoFlush);

注意:
1.PrintStram会掩盖所有的异常,但是不会抛出
2.在不同系统(window,mac)展示结果可能不尽相同
3.应该尽量减少PrintStram的使用

4.数据流(DataStream)

可以用二进制格式读/写java的基本数据类型和字符串。(主要用于两个不同的Java程序之间交换数据)
数据输入流:DataInputStram
数据输出流:DataOutputStream

5.阅读器(reader),书写器(writer)

串链到原始的输入/输出流上,使程序可以对字符进行操作(原始流是对字节操作),同时可以处理字符的编码
InputStreamReader:将字符输入流按照指定的编码(没有指定就使用默认的编码)转化为字节流,然后放入原始的输入流中

  public InputStreamReader(InputStream in, Charset charset) { }

OutputStreamWritter:将字节输出流按照指定的编码(没有指定就使用默认的编码)转化为字符流,然后放入原始的输出流中

  public OutputStreamWriter(OutputStream out, Charset cs) { }

6.过滤器阅读器(BufferedReader),过滤器书写器(BufferedWritter)

BufferedReader:常用方法readLine() //读入一行
BufferedWritter:常用方法newLine() //写入一行

7.PrintWritter

用于取代PrintStram类,它能正确的处理多字节字符集和国际化文本。

上一篇 下一篇

猜你喜欢

热点阅读