A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class Exercise4IOe {

  2.         public static void main(String[] args) {
  3.                 /** 需求:1从键盘接收一个文件夹路径 ,统计该文件夹大小 */
  4.                 // System.out.println(size(getFile()));
  5.                
  6.                 /** 需求:2删除该文件夹 */
  7.                 // delete(new File("E:\\ie"));

  8.                 /**需求:3,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中*/
  9.                 // File src = new File("E:\\src");
  10.                 // File dest = new File("E:\\src\\s");
  11.                 // try {
  12.                 // copy(src, dest);
  13.                 // } catch (IOException e) {
  14.                 // e.printStackTrace();
  15.                 // }
  16.                
  17.                 /**
  18.                  * 需求:4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
  19.                  * aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,
  20.                  * 有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来 aaa bbb.txt ccc.txt ddd.txt
  21.                  */
  22.                 // File src = new File("E:\\src");
  23.                 // print(src,0);
  24.                
  25.                 /** 斐波那契数列 */
  26.                 // System.out.println(fun(7));
  27.                
  28.                 /** 需求:求出1000的阶乘所有零和尾部零的个数 */
  29.                 // countZero(1000);
  30.                
  31.                 /** 约瑟夫环 */
  32.                 System.out.println(josephus(100, 14));
  33.         }

  34.         /** 从键盘接收一个文件夹路径 */
  35.         public static File getFile() {
  36.                 Scanner sc = new Scanner(System.in);
  37.                 System.out.println("请输入一个文件夹路径:");
  38.                 while (true) {
  39.                         File dir = new File(sc.nextLine());
  40.                         if (!dir.exists()) {
  41.                                 System.out.println("输入的地址有误或者文件夹不存在!请重新输入:");
  42.                         } else if (dir.isFile()) {
  43.                                 System.out.println("输入的地址是文件路径!请重新输入一个文件夹路径:");
  44.                         } else {
  45.                                 return dir;
  46.                         }
  47.                 }
  48.         }

  49.         /** 需求:1统计该文件夹大小 */
  50.         public static long size(File dir) {
  51.                 long size = 0;
  52.                 for (File f : dir.listFiles()) {
  53.                         if (f.isDirectory()) {
  54.                                 size += size(f);
  55.                         } else {
  56.                                 size += f.length();
  57.                         }
  58.                 }
  59.                 return size;
  60.         }

  61.         /** 需求:2删除该文件夹 */
  62.         public static void delete(File file) {
  63.                 if (file.exists()) {
  64.                         if (file.isDirectory()) {
  65.                                 for (File f : file.listFiles()) {
  66.                                         delete(f);
  67.                                 }
  68.                         }
  69.                         file.delete();
  70.                 }
  71.         }

  72.         /**
  73.          * 需求:3,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
  74.          *
  75.          * @throws IOException
  76.          */
  77.         public static void copy(File src, File dest) throws IOException {
  78.                 if (!dest.toString().contains(src.toString())) {
  79.                         File file = new File(dest, src.getName());
  80.                         if (src.isDirectory()) {
  81.                                 file.mkdirs();
  82.                                 for (File f : src.listFiles()) {
  83.                                         copy(f, file);
  84.                                 }
  85.                         } else {
  86.                                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
  87.                                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
  88.                                 byte[] b = new byte[1024 * 8];
  89.                                 int len;
  90.                                 while ((len = bis.read(b)) != -1) {
  91.                                         bos.write(b, 0, len);
  92.                                 }
  93.                                 bis.close();
  94.                                 bos.close();
  95.                         }
  96.                 } else {
  97.                         System.out.println("目标文件夹是源文件或者源文件的子文件夹!无法拷贝!");
  98.                 }
  99.         }

  100.         /**
  101.          * 需求:4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
  102.          * aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,
  103.          * 有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来 aaa bbb.txt ccc.txt ddd.txt
  104.          */
  105.         public static void print(File file, int level) {
  106.                 if (file.exists()) {
  107.                         for (int i = 0; i < level; i++) {
  108.                                 System.out.print("\t");
  109.                         }
  110.                         System.out.println(file.getName());
  111.                         if (file.isDirectory()) {
  112.                                 for (File f : file.listFiles()) {
  113.                                         print(f, level + 1);
  114.                                 }
  115.                         }
  116.                 } else {
  117.                         System.out.println("文件不存在!");
  118.                 }
  119.         }

  120.         /** 斐波那契数列 */
  121.         public static int fun(int day) {
  122.                 if (day == 1 || day == 2) {
  123.                         return 1;
  124.                 } else {
  125.                         return fun(day - 1) + fun(day - 2);
  126.                 }
  127.         }

  128.         /** 需求:求出1000的阶乘所有零和尾部零的个数 */
  129.         public static void countZero(int num) {
  130.                 BigInteger b1 = new BigInteger("1");
  131.                 for (int i = 1; i <= num; i++) {
  132.                         BigInteger b2 = new BigInteger(i + "");
  133.                         b1 = b1.multiply(b2);
  134.                 }
  135.                 String a = b1.toString();
  136.                 System.out.println(a);
  137.                 int count = 0;
  138.                 int zero = 0;
  139.                 for (int i = 0; i < a.length(); i++) {
  140.                         if ('0' == a.charAt(i)) {
  141.                                 count++;
  142.                                 zero++;
  143.                         } else {
  144.                                 zero = 0;
  145.                         }
  146.                 }
  147.                 System.out.println("零的个数:" + count);
  148.                 System.out.println("尾部零的个数:" + zero);
  149.         }

  150.         /** 约瑟夫环 */
  151.         public static int josephus(int peoples, int count) {
  152.                 ArrayList<Integer> list = new ArrayList<>();
  153.                 for (int i = 1; i <= peoples; i++) {
  154.                         list.add(i);
  155.                 }
  156.                 int now = 1;
  157.                 for (int i = 0; list.size() > 1; i++) {
  158.                         if (i == list.size()) {
  159.                                 i = 0;
  160.                         }
  161.                         if (now % count == 0) {
  162.                                 list.remove(i--);
  163.                         }
  164.                         now++;
  165.                 }
  166.                 return list.get(0);
  167.         }

  168. }
复制代码

1 个回复

倒序浏览
沙发了,谢谢楼主分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马