java file类 复制_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:\javaTest\a\b

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

File f3=new File("hello\\test01");

System.out.println(f3.getParent());

System.out.println(f3.getAbsolutePath());

查看执行结果:

hello

C:\Users\Mr.White\IdeaProjects\javaAdvance\hello\test01

8、获取名称:getName()

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

File f4=new File("abc");

System.out.println(f3.getName());

System.out.println(f3.getAbsoluteFile());

查看执行结果:

test01

C:\Users\Mr.White\IdeaProjects\javaAdvance\hello\test01

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 classTestAdvance34FileTest03Copy {5 public static voidmain(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 voidcopyDir(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=newFileInputStream(srcFile);23 //写到这个文件中

24 String path=(destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\\")+srcFile.getAbsolutePath().substring(3);25 out=newFileOutputStream(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=newFile(destDir);69 if(!newFile.exists()){70 newFile.mkdirs();71 }72 }73 //递归调用

74 copyDir(file, destFile);75 }76 }77 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值