黑马程序员--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()); } } } } |