1. 程式人生 > >java讀取檔案和寫入檔案的方式(位元組流和字元流)

java讀取檔案和寫入檔案的方式(位元組流和字元流)

java讀取檔案和寫入檔案的方式

以位元組為單位讀取檔案

以位元組為單位讀取檔案,常用於讀二進位制檔案,如圖片、聲音、影像等檔案。

一次讀一個位元組

File file = new File(fileName);  
InputStream in = null;  
        try {  
            System.out.println
("以位元組為單位讀取檔案內容,一次讀一個位元組:"); // 一次讀一個位元組 in = new FileInputStream(file); int tempbyte; while ((tempbyte = in.read()) != -1) { System.out.write(tempbyte); } in.close(); } catch (IOException e)
{ e.printStackTrace(); return; }

一次讀多個位元組

File file = new File(fileName);  
InputStream in = null;
try {  
            System.out.println("以位元組為單位讀取檔案內容,一次讀多個位元組:");  
            // 一次讀多個位元組  
            byte[] tempbytes = new byte[100];  
            int byteread =
0; in = new FileInputStream(fileName); ReadFromFile.showAvailableBytes(in); // 讀入多個位元組到位元組陣列中,byteread為一次讀入的位元組數 while ((byteread = in.read(tempbytes)) != -1) { System.out.write(tempbytes, 0, byteread); } } catch (Exception e1) { e1.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e1) { } } } }

以字元為單位讀取檔案

以字元為單位讀取檔案,常用於讀文字,數字等型別的檔案

一次讀一個字元

 File file = new File(fileName);  
 Reader reader = null;  
        try {  
            System.out.println("以字元為單位讀取檔案內容,一次讀一個位元組:");  
            // 一次讀一個字元  
            reader = new InputStreamReader(new FileInputStream(file));  
            int tempchar;  
            while ((tempchar = reader.read()) != -1) {  
                // 對於windows下,\r\n這兩個字元在一起時,表示一個換行。  
                // 但如果這兩個字元分開顯示時,會換兩次行。  
                // 因此,遮蔽掉\r,或者遮蔽\n。否則,將會多出很多空行。  
                if (((char) tempchar) != '\r') {  
                    System.out.print((char) tempchar);  
                }  
            }  
            reader.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }

一次讀多個字元

File file = new File(fileName);  
Reader reader = null;
try {  
            System.out.println("以字元為單位讀取檔案內容,一次讀多個位元組:");  
            // 一次讀多個字元  
            char[] tempchars = new char[30];  
            int charread = 0;  
            reader = new InputStreamReader(new FileInputStream(fileName));  
            // 讀入多個字元到字元陣列中,charread為一次讀取字元數  
            while ((charread = reader.read(tempchars)) != -1) {  
                // 同樣遮蔽掉\r不顯示  
                if ((charread == tempchars.length)  
                        && (tempchars[tempchars.length - 1] != '\r')) {  
                    System.out.print(tempchars);  
                } else {  
                    for (int i = 0; i < charread; i++) {  
                        if (tempchars[i] == '\r') {  
                            continue;  
                        } else {  
                            System.out.print(tempchars[i]);  
                        }  
                    }  
                }  
            }  
  
        } catch (Exception e1) {  
            e1.printStackTrace();  
        } finally {  
            if (reader != null) {  
                try {  
                    reader.close();  
                } catch (IOException e1) {  
                }  
            }  
        }  
    }

原文連結