新手瞭解java IO基礎知識(二)

一、IO概念

  • I/O 即輸入Input/ 輸出Output的縮寫,其實就是計算機調度把各個存儲中(包括內存和外部存儲)的數據寫入寫出
  • java中用“流(stream)”來抽象表示這麼一個寫入寫出的功能,封裝成一個“類”,都放在java.io這個包裡面。
  • java.io包下提供瞭各種“流”類和接口,用以獲取不同種類的數據,並 通過標準的方法輸入或輸出數據

1.什麼是輸入

​ 程序從內存中讀取數據叫輸入Input。

2.什麼輸出(Output)

​ 程序把數據寫入到內存中叫輸出Output。

二、流的分類

  • 按操作數據單位不同分為:字節流(8 bit),字符流(16 bit)
  • 按數據流的流向不同分為:輸入流,輸出流
  • 按流的角色的不同分為:節點流,處理流

IO流體系

img

1、InputStream(字節流)

示例:

 public static void main(String[] args) {
       iprt();
    }
    public static void ipst(){
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream("C:\\1.txt");
            int i;
            while ( (i = inputStream.read()) != -1){
                System.out.print((char) i);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (inputStream != null){
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

說明:使用InputStream向內存中讀如文件數據。

2、OutputStream(字節流)

示例:

public class ImageCopy {
    public static void main(String[] args) {
        try(
                InputStream inputStream = new FileInputStream("D:\\KDA.jpg");
                OutputStream outputStream = new FileOutputStream("E:\\aaa\\KDA.jpg")
         ){
            byte[] bytes = new byte[1024];
            int i;
            while ((i = inputStream.read(bytes)) != -1){
                outputStream.write(bytes,0,i);
            }
        }  catch (IOException e) {
            e.printStackTrace();
        }
    }
}

說明:使用輸入流與輸出流結合實現圖片復制的功能。

3、Reader(字符流)

示例:

public static  void iprt(){
        Reader reader = null;
        try {
            reader = new FileReader("C:\\1.txt");
            int i ;
            while ((i =  reader.read()) != -1){
                System.out.print((char) i);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }

說明:使用Reader(字符流)從文件中讀入數據。

4、Writer(字符流)

public static  void iprt(){
        Reader reader = null;
        Writer writer = null;
        try {
            reader = new FileReader("C:\\Users\\52425\\Desktop\\1.txt");
            writer = new FileWriter("C:\\2.txt");
            int i ;
            while ((i =  reader.read()) != -1){
                writer.write(i);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
                try {
                        writer.close();
                        reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }

說明:使用字符流實現文件復制功能。

三、總結(1+2)

1. File類及方法的使用

File是操作文件/目錄的類,可以對文件/目錄進行創建,重命名, 刪除等操作。

2.IO流的分類

  • 根據數據大小可分為:字節流和字符流
  • 根據流向可分為:輸入流和輸出流
  • 根據功能可分為:節點流和處理流

3.IO流的四個基本類

  • 字節輸入流:InputStream,它的常用子類是FileInputStream
  • 字節輸出流:OutputStream,它的常用子類是OutputStream
  • 字符輸入流:Reader,它的常用子類是FileReader
  • 字符輸出流:Writer,它的常用子類是FileWriter

總結

本篇關於java IO的文章就到這裡瞭,希望能幫到你,也希望你能夠多多關註WalkonNet的更多內容!

推薦閱讀: