首先什么是IO呢?IO就是Input和Output即輸入輸出。Java中將從能夠發(fā)送字節(jié)序列的任何數(shù)據(jù)源取得輸入和將輸出發(fā)送到能夠接收字節(jié)序列的任何目的地抽象為流的輸入和輸出。要注意這里說(shuō)的輸入是指從文件、網(wǎng)絡(luò)連接或內(nèi)存塊中讀取字節(jié)序列到程序中,輸出是指從程序中流出到文件、網(wǎng)絡(luò)連接或內(nèi)存塊中。
對(duì)流的類型可以從三個(gè)角度進(jìn)行分類。
按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度考慮)
按處理數(shù)據(jù)的單位不同分為字節(jié)流(以byte為單位8位)和字符流(16位)。
按功能的不同可以分為節(jié)點(diǎn)流和處理流。
下表中的是輸入輸出的抽象類,是不能進(jìn)行實(shí)例化的。

以下的是上面抽象類比較常用的的子類,在實(shí)現(xiàn)父類方法的同時(shí)都定義了自身特有的功能。
FileInputStream/FileOutputStream//以File開頭,節(jié)點(diǎn)流,用來(lái)操作文件,字節(jié)流。
FileReader\FileWriter //以File開頭,處理流,用來(lái)操作文件,字符流。
BufferedInputStream/BufferedOutputStream//帶緩沖的,處理流,字節(jié)流。
BufferedReader\BufferedWriter //帶緩沖的,處理流,字符流。
不難看出以Stream結(jié)尾的是字節(jié)流,以Reader、Writer結(jié)尾的是字符流。
緩沖流要套接在相應(yīng)的節(jié)點(diǎn)流上,將讀寫的數(shù)據(jù)先放在內(nèi)存中進(jìn)行緩存,提高了鍍錫效率,同時(shí)擴(kuò)展了一些方法。使用flush方法可以使內(nèi)存中數(shù)據(jù)立刻寫出。
處理流要套接在節(jié)點(diǎn)流或者處理流上,通過對(duì)數(shù)據(jù)的處理增強(qiáng)程序的讀寫功能。
舉一部分例子:
用File創(chuàng)建文件
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");//或?qū)懗?"f:\\demo.txt")
System.out.println(f.createNewFile());//當(dāng)不存在具有此抽象路徑名指定名稱的文件時(shí),創(chuàng)建一個(gè)新的空文件。
System.out.println(f.getPath());//獲取文件目錄
System.out.println(f.isDirectory());//判斷文件是否是一個(gè)目錄
}
}
運(yùn)行結(jié)果
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()+"文件已創(chuàng)建");//文件不存在則創(chuàng)建
}catch(Exception e){}
}
}
}
運(yùn)行結(jié)果提示文件已創(chuàng)建。
3.
import java.io.File;
public class IODemo3 {
public static void main(String[] args){
File f = new File("F:");
File file[] = f.listFiles();//將F盤的文件和目錄名存在數(shù)組中
for(int i=0;i<file.length;i++){
System.out.println(file[i]);
}
String str[] = f.list();//將F盤的文件存在數(shù)組中
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) {
}
// 輸出讀入的內(nèi)容
System.out.println(new String(b));
}
}
因?yàn)槎x的數(shù)組長(zhǎng)度是1024,所以后面跟了N多個(gè)空格。
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,結(jié)束循環(huán)
System.out.print((char)b);
num++;
}
in.close();
}catch(IOException e){e.printStackTrace();}
System.out.println("共讀取了"+num+"個(gè)字節(jié)");
}
}
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));
}
}
運(yùn)行結(jié)果^_^
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—");//寫入的內(nèi)容
}catch(Exception e){}
try{
out.close();
}catch(Exception e){}
}
}
額 這個(gè)在E盤生成了一個(gè)文件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));//從鍵盤獲取輸入的內(nèi)容
String str = null;
System.out.print("請(qǐng)輸入內(nèi)容:");
try{str = buf.readLine();//讀取輸入的內(nèi)容
buf.close();
}catch(Exception e){}
System.out.println("輸入的內(nèi)容:"+str);
}
}

就舉這些例子吧!有錯(cuò)的請(qǐng)指出來(lái)哈^_^!