JAVA入門到精通-第45講-IO程式設計
阿新 • • 發佈:2018-11-30
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
1 33 1
1 40 1
來自為知筆記(Wiz)
------------------------------------------
byte 是一位,不足以表示漢字; char 是兩位,可以表示一個漢字; 達到檔案的末尾,返回-1; char是1024個字元; String s=new String(c,0,n); 這樣,就沒有亂碼;
關閉檔案:finally---fr.close---fw.close fw.write(c,0,n); 讀取檔案,防止亂碼;
因為,發現JAVA開發者效率還是不夠高,
一行一行的讀取,速度比較快;
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)