1. 程式人生 > >JAVA入門到精通-第45講-IO程式設計

JAVA入門到精通-第45講-IO程式設計

image1=ImageIO.read(new File("bomb_1.gif")); 圖片拷貝: 輸入流和輸出流同時要用的問題: 圖片讀入到記憶體; 寫入,輸出到某個檔案; 二進位制檔案,位元組流完成; FileInputStream fis=new FileInputStream("xxxx.jpg"); 出到指定檔案: FileOutputStream  fos=null; 關閉開啟的檔案流:
------------------------------------------
FileReader,FileWriter類,檔案字元流的物件; Reader讀進來,Writer寫出去;
byte 是一位,不足以表示漢字; char 是兩位,可以表示一個漢字; 達到檔案的末尾,返回-1; char是1024個字元; String s=new String(c,0,n); 這樣,就沒有亂碼;
關閉檔案:finally---fr.close---fw.close fw.write(c,0,n); 讀取檔案,防止亂碼;
因為,發現JAVA開發者效率還是不夠高,
提出緩衝字元流:提高效率; 一個一個位元組/字元讀取,速度太慢; 是一種編譯異常, BufferedReader快取為物件; 先通過FileReader找到一個檔案, 然後通過BufferReader進行快取 readLine不讀取換行的;末尾,返回null;
一行一行的讀取,速度比較快;
BufferedWriter輸出到磁碟; FileWriter找到物件; BufferedWriter輸出到快取;

檔案的關閉:檔案不關閉,後果很嚴重: 換行:\r\n
坦克存檔退出: 記錄坦克的座標 一行行讀進來,讓坦克暫停; 記事本功能的實現: --------------------------------------------- x 39   1
java檔案程式設計--常用io流
2
常用io流--檔案位元組流
3
1、案例[Io02.java]:讀取檔案(檔案位元組輸入流使用,目的:FileInputStream類)把用FileInputStream的物件把檔案讀入到記憶體
4
/**
5
 * File類的基本用法
6
 * io流--檔案位元組流
7
 * FileInputStream類的使用
8
 */
9
import java.io.*;
10
public class Io02 {
11
    public static void main(String[] args) {
12
        //得到一個檔案物件,f指向e:\ff\hsp.txt檔案
13
        File f=new File("e:\\ff\\hsp.txt");
14
        FileInputStream fis=null;
15
        try {
16
            //因為File沒有讀寫的能力,所以需要使用InputStream類
17
            fis=new FileInputStream(f);
18
            //定義一個位元組陣列,相當於快取
19
            byte []bytes=new byte[1024];
20
            int n=0;//得到實際讀取到的位元組數
21
            //迴圈讀取
22
            while((n=fis.read(bytes))!=-1){
23
                //把位元組轉成String
24
                String s=new String(bytes,0,n);
25
                System.out.println(s);
26
            }
27
        } catch (Exception e) {
28
            e.printStackTrace();
29
        }finally{
30
            //關閉檔案流必需放在finally語句塊中
31
            try {
32
                fis.close();
33
            } catch (Exception e) {
34
                e.printStackTrace();
35
            }
36
        }
37
    }
38
}
39

2、案例[Io03.java]:從鍵盤接收使用者輸入內容,並儲存到檔案中(檔案位元組輸出流,目的:FileOutputStream)


1 33   1
/**
2
 * File類的基本用法
3
 * io流--檔案位元組流
4
 * FileOutputStream類的使用
5
 */
6
import java.io.*;
7
public class Io03 {
8
    public static void main(String[] args) {
9
        File f=new File("e:\\ff\\ss.txt");//直接覆蓋寫同一個檔案
10
                //位元組輸出流
11
        FileOutputStream fos=null;
12
        if(f.exists()){
13
            System.out.println("檔案已存在");
14
        }else{
15
            try {
16
                fos=new FileOutputStream(f);
17
                String s="hello,world!\r\n";
18
                String s1="中國人";
19
                fos.write(s.getBytes());
20
                fos.write(s1.getBytes());
21
            } catch (Exception e) {
22
                e.printStackTrace();
23
            }finally{
24
                try {
25
                    fos.close();
26
                } catch (Exception e2) {
27
                    e2.printStackTrace();
28
                }
29
            }
30
        }
31
    }
32
}
33

3、案例[Io04.java]:圖片拷貝


1 40   1
/**
2
 * File類的基本用法
3
 * io流--檔案位元組流
4
 * 圖片拷貝--FileInputStream類與 FileOutputStream類
5
 */
6
import java.io.*;
7
public class Io04 {
8
    public static void main(String[] args) {
9
        //先將圖片讀入到記憶體,再將記憶體中的圖片寫入到某個檔案
10
        //因為二進位制檔案只能拿使用位元組流來處理
11
        //輸入流
12
        FileInputStream fis=null;
13
        //輸出流
14
        FileOutputStream fos=null;
15
        
16
        try {
17
            fis=new FileInputStream("e:\\ff\\a.jpg");
18
            fos=new FileOutputStream("e:\\a.jpg");
19
            byte buf[]=new byte[1024];
20
            int n=0;//記錄實際讀取到的位元組數
21
            //迴圈讀取圖片
22
            while((n=fis.read(buf))!=-1){
23
                //輸出到指定檔案
24
                fos.write(buf);
25
            }
26
            
27
        } catch (Exception e) {
28
            e.printStackTrace();
29
        }finally{
30
            //一定要關閉開啟的檔案流
31
            try {
32
                fis.close();
33
                fos.close();
34
            } catch (Exception e) {
35
                e.printStackTrace();
36
            }
37
        }
38
    }
39
}
40
















來自為知筆記(Wiz)