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 }
运行结果图
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 }
运行结果图
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 }
运行结果图
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 }
运行结果图
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 }
运行结果图