java进阶(34)--File类、目录复制
Mrwhite86 人气:0一、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 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 }
加载全部内容