南昌Java培训
达内南昌中心

0791-88193285

热门课程

Java IO 目录文件复制与删除

  • 时间:2015-12-04
  • 发布:南昌java培训
  • 来源:PHPERZ


    达内java培训专家讲解Java IO 目录文件的复制与删除,以及目录文件大小数量的统计的方法,代码如下:

package com.newer.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Caculator_1 {
 int tfolder = 0;
 int tfiles = 0;

 public static void main(String[] args) {

  Caculator_1 c = new Caculator_1();
  String path = "c:/abc";// 目录文件夹路径
  File f = new File(path);//读取指定路径下的文件
  System.out.println("总大小" + c.getsize(f) + "字节");
  System.out.println("总文件夹数" + c.gettfolder());
  System.out.println("总文件数" + c.gettfiles());
  System.out.println("开始复制");
  c.copy("c:/abc", "c:/abc1");
  System.out.println("复制成功");
  System.out.println("开始删除");
  c.deletes(f);
  System.out.println("删除成功");

 }

 public long getsize(File path) {//<strong> 该方法用于统计文件夹数文件数以及文件大小</strong>
  long filesize = 0;
  File[] files = path.listFiles();
  // for (int i = 0; i < files.length; i++) {
  // if (files[i].isDirectory()) {
  // tfolder++;
  // filesize+=getsize(files[i]);
  // }else{
  // tfiles++;
  // filesize+=files[i].length();
  // }
  // }
  for (File file : files) {// foreach循环与上面循环作用相同
   if (file.isDirectory()) {
    tfolder++;
    filesize += getsize(file);
   } else {
    tfiles++;
    filesize += file.length();// 文件大小字节为单位
   }
  }
  return filesize;// 统计目录大小
 }

 public int gettfolder() {
  return tfolder;

 }

 public int gettfiles() {
  return tfiles;

 }

 public void deletes(File path) {// <strong>删除文件夹及文件的方法</strong>
  File[] files = path.listFiles();
  for (File file : files) {
   if (file.isDirectory()) {
    deletes(file);// 使用递归
    file.delete();
   } else {
    file.delete();
   }
  }
 }
 public void copy(String a, String b) {//<strong>复制文件的方法</strong> 两个String类型参数传入被复制文件路径和目标文件路径
  File src = new File(a);
  File dest = new File(b);
  if (!src.exists()) {// 判断被复制文件夹是否存在
   System.out.println("文件夹不存在");
   return;
  }
  if (src.isFile()) {// 如果是文件
   try {
    // 读出
    FileInputStream in = new FileInputStream(a);
    // 写入
    FileOutputStream out = new FileOutputStream(b);
    // 缓冲区
    byte[] buf = new byte[1024];
    int n;
    while (-1 != (n = in.read(buf))) {
     out.write(buf, 0, n);
    }
    // 关闭流
    in.close();
    out.close();
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } else if (src.isDirectory()) {// 如果是目录
   if (!dest.exists()) {// 如果没有该文件夹
    dest.mkdir();// 创建文件夹
   }
   String[] filelist = src.list();
   for (int i = 0; i < filelist.length; i++) {
    copy(a + "/" + filelist[i], b + "/" + filelist[i]);
    // 使用递归解决文件夹下还有文件夹的问题
   }
  }
 }
}


上一篇:达内获新浪“2015中国品牌影响力教育集团”奖项
下一篇:达内:Git的七个使用技巧

恭喜达内获得《产学合作协同育人项目合作伙伴奖》

达内Java大数据捷报频传,最高薪资15000元

中传学子参加达内Java培训,转身成为Java工程师月薪12.5K

本科生求职难参加达内Java培训,获11K高薪入职上海睿民

选择城市和中心
贵州省

广西省

海南省