zoukankan      html  css  js  c++  java
  • java进阶(34)--File类、目录复制

    一、File类的理解

    1、File类不能完成文件的读与写。

    2、FIle类代表:文件或目录的路径名的抽象表示形式。

     

    二、FIle类常用方法:

    1、创建一个FIle对象:File()

    File f1=new File("D:\javaTest\fileTest02");

    2、判断File对象是否存在:exists()

    System.out.println(f1.exists());

    3、新建文件:createNewFile()

    f1.createNewFile();

    4、新建文件夹:mkdir()

    f1.mkdir();

    5、创建多重目录:mkdirs()

            File f2=new File("D:\javaTest\a\b\c");
            if(!f2.exists()){
                f2.mkdirs();
            }

    6、获取父级目录:getParent()

            File f2=new File("D:\javaTest\a\b\c");
            if(!f2.exists()){
                f2.mkdirs();
            }
            String parentPath=f2.getParent();
            System.out.println(parentPath);

    执行结果:D:javaTesta

    7、获取绝对路径目录:getAbsolutePath()

            File f3=new File("hello\test01");
            System.out.println(f3.getParent());
            System.out.println(f3.getAbsolutePath());

    查看执行结果:

    hello
    C:UsersMr.WhiteIdeaProjectsjavaAdvancehello est01

    8、获取名称:getName()

    9、获取绝对文件名:getAbsoluteFile()

            File f4=new File("abc");
            System.out.println(f3.getName());
            System.out.println(f3.getAbsoluteFile());

    查看执行结果:

    test01
    C:UsersMr.WhiteIdeaProjectsjavaAdvancehello est01

    10、判断路径是否是一个文件:isFile()

    11、判断路径是否是一个目录:isDirectory()

            File f1=new File("D:\javaTest\test01.txt");
            f1.createNewFile();
            System.out.println(f1.isFile());
            System.out.println(f1.isDirectory());

    查看执行结果:

    true
    false

    12、获取最后一次修改时间,结果为13位时间戳:lastModified()

    System.out.println(f1.lastModified());

    13、获取文件的大小,单位字节:length()

    System.out.println(f1.length());

    14、获取当前目录下所有子文件,返回FIle数组:listFiles()

            File f=new File("D:\javaTest");
            File[] files=f.listFiles();
            for(File file:files){
                System.out.println(file.getAbsolutePath());
            }

     

    三、目录拷贝,将C:\test01目录下内容拷贝至D:\test01目录下

     使用FIle类,流集合递归完成。

     1 package JAVAADVANCE;
     2 import java.io.*;
     3 import java.lang.reflect.Field;
     4 public class TestAdvance34FileTest03Copy {
     5     public static void main(String[] args) throws IOException {
     6         //拷贝源.
     7         File srcFile = new File( "c:\test01");
     8         //拷贝目标
     9         File destFile = new File( "D:\");
    10         //调用方法拷贝
    11         copyDir(srcFile, destFile);
    12         }
    13     private static void copyDir(File srcFile, File destFile) {
    14         if(srcFile.isFile()) {
    15             // srcFile如果是一个文件的话,递归结束。
    16             //是文件的时候需要拷贝
    17             //...一边读一边写
    18             FileInputStream in=null;
    19             FileOutputStream out=null;
    20             try {
    21                 //读这个文件
    22                 in=new FileInputStream(srcFile);
    23                 //写到这个文件中
    24                 String path=(destFile.getAbsolutePath().endsWith("\")  ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\")+srcFile.getAbsolutePath().substring(3);
    25                 out=new FileOutputStream(path);
    26                 //一边读一边写
    27                 byte[] bytes=new byte[1024*1024];//一次复制1MB
    28                 int readCount=0;
    29                 while ((readCount=in.read(bytes))!=-1){
    30                     out.write(bytes,0,readCount);
    31                 }
    32 
    33             } catch (FileNotFoundException e) {
    34                 e.printStackTrace();
    35             } catch (IOException e) {
    36                 e.printStackTrace();
    37             } finally {
    38                 if (out!=null){
    39                     try {
    40                         out.close();
    41                     } catch (IOException e) {
    42                         e.printStackTrace();
    43                     }
    44                     if (in !=null){
    45                         try {
    46                             in.close();
    47                         } catch (IOException e) {
    48                             e.printStackTrace();
    49                         }
    50                     }
    51                 }
    52 
    53             }
    54             return;
    55         }
    56         //获取源下面的子目录
    57         File[] files = srcFile.listFiles();
    58         for(File file : files){
    59             // 获取所有文件的(包括目录和文件)绝对路径
    60             //System.out.println(file.getAbsolutePath());
    61             if(file.isDirectory()){
    62                 //新建对应的目录
    63                 //System.out.println(file.getAbsolutePath());
    64                 String srcDir=file.getAbsolutePath();//获取源目录
    65                 //System.out.println(srcDir.substring(3));
    66                 String destDir=(destFile.getAbsolutePath().endsWith("\")  ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\")+srcDir.substring(3);
    67                 //System.out.println(destDir);
    68                 File newFile=new File(destDir);
    69                 if(!newFile.exists()){
    70                     newFile.mkdirs();
    71                 }
    72             }
    73             //递归调用
    74             copyDir(file, destFile);
    75         }
    76     }
    77 }
  • 相关阅读:
    Kinect 开发 —— 硬件设备解剖
    Kinect 开发 —— 引言
    (转)OpenCV 基本知识框架
    OpenCV —— 摄像机模型与标定
    OpenCV —— 跟踪与运动
    OpenCV —— 图像局部与分割(二)
    OpenCV —— 图像局部与部分分割(一)
    OpenCV —— 轮廓
    OpenCV —— 直方图与匹配
    OpenCV —— 图像变换
  • 原文地址:https://www.cnblogs.com/mrwhite2020/p/14322392.html
Copyright © 2011-2022 走看看