Android中的IO输入输出流

Android中的IO输入输出流_第1张图片

分类

1.IO流按流不同分为字符流和字节流两大类:字节流占8位1个字节,可以对所以对象操作。字符流16位两个字节,一般对文字类对象操作,Java中的字符是Unicode编码。

2.按输入输出流分类:输入流即为将磁盘、内存的数据读取到程序中。输出流即为将程序输出到磁盘、内存中。

3.按不同的操作对象可以分

     File(文件): FileInputStream, FileOutputStream, FileReader, FileWriter 
     byte[]:ByteArrayInputStream, ByteArrayOutputStream 
     Char[]: CharArrayReader,CharArrayWriter 
     String:StringBufferInputStream, StringReader, StringWriter 
     网络数据流:InputStream,OutputStream, Reader, Writer 

 

基本用法

InputStream:
      abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
      intread(byte[]?b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。
      intread(byte[]?b, int?off, int?len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。

 

outputStream:
   abstract void write(int?b):往输出流中写入一个字节。
     void write(byte[]?b) :往输出流中写入数组b中的所有字节。
     void write(byte[]?b, int?off, int?len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。


其它方法:
   void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
     void close() :关闭输出流,释放和这个流相关的系统资源。

 

高效的BufferedInputStream:



public class BufferedInputStreamTest {  
    /**  
     * 高效输入流的使用 BufferedInputStream的使用  
     * */  
    public static void main(String[] args) {  
  
        // 定义一个输入流对象  
        FileInputStream fis = null;  
  
        // 定义一个存放输入流的缓冲对象  
        BufferedInputStream bis = null;  
  
        // 定义一个输出流,相当StringBuffer(),会根据读取数据的大小,调整byte的数组长度  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  
        try {  
            // 把文件路径和文件名作为参数 告诉读取流  
            fis = new FileInputStream("D:/tt.java");  
  
            // 把文件读取流对象传递给缓存读取流对象  
            bis = new BufferedInputStream(fis);  
  
            // 获得缓存读取流开始的位置  
            int len = bis.read();  
            System.out.println("len=" + len);  
  
            // 定义一个容量来盛放数据  
            byte[] buf = new byte[1024];  
  
            while ((len = bis.read(buf)) != -1) {  
                // 如果有数据的话,就把数据添加到输出流  
                //这里直接用字符串StringBuffer的append方法也可以接收  
                baos.write(buf, 0, len);  
            }  
  
            // 把文件输出流的数据,放到字节数组  
            byte[] buffer = baos.toByteArray();  
  
            // 打印输出  
            System.out.println(new String(buffer, "gbk"));  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                //关闭所有的流   
                baos.close();  
                bis.close();  
                fis.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
  
        }  
  
    }  
  
}  

 

你可能感兴趣的:(JAVA)