流(stream)的理解


我曾一度對流的概念管不清楚--什么輸入流、輸出流、read和write等等。

而現在重新去理解這個概念的時候,發現其實並沒有我以前想象那么復雜。

流:

程序和外部設備進行數據傳輸的一個通道。分為輸入流和輸出流。

輸入流(InputStream):

終端設備里的數據傳輸給程序的通道

輸出流(OutStream)

程序的數據傳輸給終端設備的通道

外部設備:

文件、鍵盤、鼠標、屏幕、控制台。。。(有些外部設備只能有輸入流或者輸出流)

Read:

輸入流通過read把外部設備的數據讀到程序中

Write:

輸出流通過write吧程序中的數據寫到外部設備

 

流程:

外部設備--->>>輸入流--->>> 程序 --->>>輸出流 --->>>外部設備

 

舉例(java):

場景:通過程序實現文件的復制,並在復制的文件中加入一些信息。

程序:

public class CopyFile {
    public byte[] getFile() throws IOException {
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream("c:\\file.txt");
            byte[] result = new byte[fileInputStream.available()];
            fileInputStream.read(result);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fileInputStream != null) {
                fileInputStream.close();
            }

        }

        return null;
    }

    public void copyFile(byte[] result) throws IOException {
        FileOutputStream fileOutputStream = null;
        try {
            File newFile = new File("c:\\copyFile.txt");
            fileOutputStream = new FileOutputStream(newFile);
            fileOutputStream.write(result);
            fileOutputStream.write("復制成功了".getBytes());
            fileOutputStream.flush();
            fileOutputStream.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if (fileOutputStream != null) {
                fileOutputStream.close();
            }
        }

    }

    public static void main(String[] args) {
        CopyFile copyFile = new CopyFile();
        byte[] result;
        try {
            result = copyFile.getFile();
            copyFile.copyFile(result);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        

    }
}

 

分析:

1:通過FileInputStream給文件創建一個輸入流通道

2:通過FileInputStream的read方法,把文件信息讀取到程序中

3:通過File來創建一個副本文件

4:通過FileOutputStream給副本文件創建一個輸出流通道

5:通過FileOutputStream的write方法,給副本文件寫入信息。

總結:

通過輸入流能把外部設備中的數據讀到程序里面

而通過輸出流能把程序中的數據寫入外部設備中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM