首先什么是IO呢?IO就是Input和Output即輸入輸出。Java中將從能夠發送字節序列的任何數據源取得輸入和將輸出發送到能夠接收字節序列的任何目的地抽象為流的輸入和輸出。要注意這里說的輸入是指從文件、網絡連接或內存塊中讀取字節序列到程序中,輸出是指從程序中流出到文件、網絡連接或內存塊中。

     對流的類型可以從三個角度進行分類。

     按數據流的方向不同可以分為輸入流和輸出流。(以程序的角度考慮)

     按處理數據的單位不同分為字節流(以byte為單位8位)和字符流(16位)。

     按功能的不同可以分為節點流和處理流。

     下表中的是輸入輸出的抽象類,是不能進行實例化的。

image

     以下的是上面抽象類比較常用的的子類,在實現父類方法的同時都定義了自身特有的功能。

FileInputStream/FileOutputStream//以File開頭,節點流,用來操作文件,字節流。

FileReader\FileWriter //以File開頭,處理流,用來操作文件,字符流。

BufferedInputStream/BufferedOutputStream//帶緩沖的,處理流,字節流。

BufferedReader\BufferedWriter //帶緩沖的,處理流,字符流。

     不難看出以Stream結尾的是字節流,以Reader、Writer結尾的是字符流。

     緩沖流要套接在相應的節點流上,將讀寫的數據先放在內存中進行緩存,提高了鍍錫效率,同時擴展了一些方法。使用flush方法可以使內存中數據立刻寫出。

     處理流要套接在節點流或者處理流上,通過對數據的處理增強程序的讀寫功能。

     舉一部分例子:

     用File創建文件

1.

import java.io.File;
import java.io.IOException;

public class IODemo1 {
    public static void main(String[] args) throws IOException{
        File f = null;
        f = new File("f:"+File.separator+"demo.txt");//或寫成("f:\\demo.txt")
        System.out.println(f.createNewFile());//當不存在具有此抽象路徑名指定名稱的文件時,創建一個新的空文件。
        System.out.println(f.getPath());//獲取文件目錄
        System.out.println(f.isDirectory());//判斷文件是否是一個目錄
    }
}

運行結果

image

2.

import java.io.File;

public class IODemo2 {
    public static void main(String[] args){
        File f = null;
        f = new File("f:"+File.separator+"demo01.txt");
        if(f.exists()){//如果文件存在則刪除
            f.delete();
        }
        else{
            try{
                System.out.println(f.createNewFile()+"文件已創建");//文件不存在則創建
            }catch(Exception e){}
        }
    }

}

運行結果提示文件已創建。

3.

import java.io.File;

public class IODemo3 {
    public static void main(String[] args){
        File f = new File("F:");
        File file[] = f.listFiles();//將F盤的文件和目錄名存在數組中
        for(int i=0;i<file.length;i++){
            System.out.println(file[i]);
        }
        String str[] = f.list();//將F盤的文件存在數組中
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]);
        }
    }
}

額  F盤文件太多了,就不截圖了哈,可以自己試一下!^_^

     InputStream的例子:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class IODemo8 {
    public static void main(String[] args) {
        File f = new File("e:" + File.separator + "demo.txt");// 要輸入到的文件
        InputStream input = null;
        try {
            input = new FileInputStream(f);
        } catch (Exception e) {
        }
        byte b[] = new byte[9];
        for (int i = 0; i < b.length; i++) {
            try {
                b[i] = (byte) input.read();
            } catch (Exception e) {
            }
        }
        try {
            input.close();
        } catch (Exception e) {
        }
        // 輸出讀入的內容
        System.out.println(new String(b));
    }

}

image

因為定義的數組長度是1024,所以后面跟了N多個空格。

FileInputStrea的例子:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class IODemo13 {
    public static void main(String[] args){
        int b=0;
        FileInputStream in = null;
        try{
            in = new FileInputStream("e:"+File.separator+"demo1.txt");
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }
        long num  = 0;
        try{
            while((b=in.read())!=-1){//到文件尾得到-1,結束循環
                System.out.print((char)b);
                num++;
            }
            in.close();
        }catch(IOException e){e.printStackTrace();}
        System.out.println("共讀取了"+num+"個字節");
    }

}

Reader的例子:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class IODemo11 {
    public static void main(String[] args){
        File f=new File("e:"+File.separator+"demo.txt");
        Reader r =null;
        try{
            r = new FileReader(f);
        }catch(Exception e){}
        char c[] = new char[1024];
        int count = 0;
        try{
            count = r.read(c);
        }catch(Exception e){}
        System.out.println(new String(c,0,count));
    }

}

運行結果^_^

image

FileWriter的例子:

import java.io.File;
import java.io.FileWriter;

public class IODemo12 {
    public static void main(String[] args){
        File f =new File("e:"+File.separator+"demo02.txt");//要寫入到的文件
        FileWriter out = null;
        try{
            out = new FileWriter(f);
        }catch(Exception e){}
        try{
            out.write("Hello fly—");//寫入的內容
        }catch(Exception e){}
        try{
            out.close();
        }catch(Exception e){}
    }

}

額 這個在E盤生成了一個文件demo02,里面有以句話Hello fly—。

BufferedReader的例子:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class IODemo17 {
    public static void main(String[] args){
        BufferedReader buf = null;
        buf = new BufferedReader(new InputStreamReader(System.in));//從鍵盤獲取輸入的內容
        String str = null;
        System.out.print("請輸入內容:");
        try{str = buf.readLine();//讀取輸入的內容
        buf.close();
        }catch(Exception e){}
        System.out.println("輸入的內容:"+str);
    }

}

 

image

 

就舉這些例子吧!有錯的請指出來哈^_^!