黑马程序员--java基础之IO流
IO流的规律:
1、首先知道IO流的体系,分为输入和输出流,输入流:InputStream,Reader.输出流:OutputStream,Writer
2、明确源和目的,源 需要用到InputStream或者Reader;
目的需要用到OutputSteam或者Writer;
3、明确具体文件类型:如果是文本文件,用字符流Reader/Writer;
如果是非文本文件,如图片,视频等,用字节流InputStream/OutputStream;
4、通过设备确定用哪个具体对象:源分为:内存,硬盘,键盘。
目的分为:内存,硬盘,控制台。
5、是否需要提高效率:BufferedReader/Writer
练习一:读取一个.java文件,打印出来
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class IOStream{ public static void main(String [] args){ FileReader fr = null; try{ fr = new FileReader("area.java"); char [] ch = new char[1024]; int num = 0; while((num = fr.read(ch))!=-1){ System.out.print("area.java:" + new String(ch,0,num)); } } catch(IOException e){ System.out.println(e.toString()); } finally{ try{ fr.close(); } catch(IOException e){ System.out.println(e.toString()); } } }} |
练习二:将一个c盘的文件复制到d盘
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class IOStream{ public static void main(String [] args){ FileWriter fw = null; FileReader fr = null; try{ fw = new FileWriter("D:\\area.java"); fr = new FileReader("area.java"); char [] ch = new char[1024]; int num = 0; while((num = fr.read(ch))!=-1){ fw.write(ch,0,num); } } catch(IOException e){ System.out.println(e.toString()); } finally{ if(fr == null) try{ fr.close(); } catch(IOException e){ System.out.println(e.toString()); } if(fw == null) try{ fw.close(); } catch(IOException e){ System.out.println(e.toString()); } } }} |
练习三:练习二的改进版,利用缓冲区复制文本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
class IOStream{ public static void main(String [] args){ BufferedReader br = null; BufferedWriter bw = null; try{ br = new BufferedReader(new FileReader("area.java")); bw = new BufferedWriter(new FileWriter("D:\\area.java")); String s = null; while((s = br.readLine())!=null){ bw.write(s); bw.newLine(); bw.flush(); } } catch(IOException e){ System.out.println(e.toString()); } finally{ if(bw==null) try{ bw.close(); } catch(IOException e){ System.out.println(e.toString()); } if(br==null) try{ br.close(); } catch(IOException e){ System.out.println(e.toString()); } } }} |
练习四:拷贝一张图片;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class IOStream{ public static void main(String [] args){ FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream("34.jpg"); fos = new FileOutputStream("D:\\background.jpg"); byte [] bt = new byte[1024]; int num = 0; while((num = fis.read(bt))!=-1){ fos.write(bt); } } catch(IOException e){ System.out.println(e.toString()); } finally{ if(fis==null) try{ fis.close(); } catch(IOException e){ System.out.println(e.toString()); } if(fos==null) try{ fos.close(); } catch(IOException e){ System.out.println(e.toString()); } } }} |

浙公网安备 33010602011771号