JAVA进阶23

1、统计文件夹大小

 1 package cn.demo02;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * @Classname DirTest03
 7  * @Description TODO
 8  * @Date 2019-4-25 10:48
 9  * @Created by Administrator
10  * 统计文件夹大小
11  */
12 public class DirTest03 {
13     public static void main(String[] args) {
14         File src = new File("F:/Java/Java-");
15         count(src);
16         System.out.println(len);
17     }
18     private static long len = 0;
19     public static void count(File src){
20         //获取大小
21         if (null!=src&&src.exists()){
22             if (src.isFile()){
23                 //是否是文件,文件才有大小
24                 len+=src.length();
25             }else {
26                 //如果是文件夹,输出子孙级文件
27                 for (File s:src.listFiles()){
28                     count(s);
29                 }
30             }
31         }
32     }
33 
34 }
View Code

运行结果图

2、使用面向对象,统计文件夹的大小

 1 package cn.demo02;
 2 
 3 import java.io.File;
 4 
 5 /**
 6  * 使用面向对象:统计文件夹的大小
 7  *
 8  * @Classname DirTest04
 9  * @Description TODO
10  * @Date 2019-4-25 11:10
11  * @Created by Administrator
12  */
13 public class DirTest04 {
14     //大小
15     private long len;
16     //文件夹
17     private String path;
18     //文件的个数
19     private int fileSize;
20     //文件夹的个数
21     private int dirSize;
22     //
23     private File src;
24 
25     public DirTest04(String path) {
26         this.path = path;
27         this.src = new File(path);
28         count(this.src);
29     }
30 
31     public static void main(String[] args) {
32         DirTest04 dir = new DirTest04("F:/Java/Java-");
33         System.out.println("大小:"+dir.getLen()+"\n"+"文件夹的个数:"+dir.getDirSize()+"\n"+
34                 "文件的个数:"+dir.getFileSize());
35     }
36 
37     public long getLen() {
38         return len;
39     }
40 
41     public int getFileSize() {
42         return fileSize;
43     }
44 
45     public int getDirSize() {
46         return dirSize;
47     }
48 
49     //统计大小
50     private void count(File src) {
51         //如果是文件则获取大小
52         if (null != src && src.exists()) {
53             if (src.isFile()){
54                 len += src.length();
55                 this.fileSize++;
56             } else {
57                 this.dirSize++;
58                 //如果是文件夹,则输出子孙级文件
59                 for (File s : src.listFiles()) {
60                     count(s);
61                 }
62             }
63         }
64     }
65 }
View Code

运行结果图

3、第一个IO程序:理解操作步骤

 1 package cn.demo02;
 2 
 3 import java.io.*;
 4 
 5 /**
 6  * 第一个程序:理解操作步骤
 7  * 1、创建源
 8  * 2、选择流
 9  * 3、操作
10  * 4、释放资源
11  *
12  * @Classname IO_Demo01
13  * @Description TODO
14  * @Date 2019-4-25 15:56
15  * @Created by Administrator
16  */
17 public class IO_Demo01 {
18     public static void main(String[] args) {
19         //1、创建源
20         File src = new File("F:/Java/test018/demo01/abc.txt");
21         //2、选择流
22         InputStream is = null;
23         try {
24             is = new FileInputStream(src);
25             //3、操作(读取)
26             int temp;
27             while ((temp = is.read()) != -1) {
28                 System.out.print((char) temp);
29             }
30         } catch (FileNotFoundException e) {
31             e.printStackTrace();
32         } catch (IOException e) {
33             e.printStackTrace();
34         } finally {
35             //释放资源
36             try {
37                 if (null != is) {
38                     is.close();
39                 }
40             } catch (IOException e) {
41                 e.printStackTrace();
42             }
43         }
44     }
45 }
View Code

运行结果图

4、文件字节流

 1 package cn.demo02;
 2 
 3 import java.io.*;
 4 
 5 /**
 6  * @Classname IO_Demo02
 7  * @Description TODO
 8  * @Date 2019-4-25 16:20
 9  * @Created by Administrator
10  */
11 public class IO_Demo02 {
12     public static void main(String[] args) {
13         //创建源
14         File src = new File("F:/Java/test018/demo01/abc.txt");
15         //选择流
16         InputStream is = null;
17         try {
18             is=new FileInputStream(src);
19             //操作(分段读取)
20             byte[] car = new byte[3];   //缓冲容器
21             int len = -1;   //接受长度
22             while ((len = is.read(car))!=-1){
23                 //字节数组--》字符串(解码)
24                 String str = new String(car,0,len);
25                 System.out.println(str);
26             }
27         } catch (FileNotFoundException e) {
28             e.printStackTrace();
29         } catch (IOException e) {
30             e.printStackTrace();
31         }finally {
32             try {
33                 if (null!=is){
34                     is.close();
35                 }
36             } catch (IOException e) {
37                 e.printStackTrace();
38             }
39         }
40     }
41 }
View Code

运行结果图

5、输出流OutputStream

 1 package cn.demo02;
 2 
 3 import jdk.internal.util.xml.impl.Input;
 4 
 5 import java.io.*;
 6 
 7 /**
 8  * 文件字节输出流
 9  * 1、创建源
10  * 2、选择流
11  * 3、操作(写出内容)
12  * 4、释放资源
13  *
14  * @Classname IO_Demo03
15  * @Description TODO
16  * @Date 2019-4-25 18:10
17  * @Created by Administrator
18  */
19 public class IO_Demo03 {
20     public static void main(String[] args) {
21         //1、创建源
22         File desk = new File("desk.txt");
23         //2、选择流
24         OutputStream os = null;
25         try {
26             os = new FileOutputStream(desk,true);
27             //3、操作(写出)
28             String msg = "IO is easy!";
29             byte[] datas = msg.getBytes();  //字符串--》字符串数组(编码)
30             os.write(datas,0,datas.length);
31             os.flush();
32         } catch (FileNotFoundException e) {
33             e.printStackTrace();
34         } catch (IOException e) {
35             e.printStackTrace();
36         } finally {
37             if (null != os) {
38                 //4、释放资源
39                 try {
40                     os.close();
41                 } catch (Exception e) {
42                     e.printStackTrace();
43                 }
44             }
45         }
46     }
47 }
View Code

运行结果图

 

posted @ 2019-04-29 17:33  贫血的吸血鬼  阅读(127)  评论(0编辑  收藏  举报