黑马程序员_File类

来源:互联网 发布:人工智能技术及应用 编辑:程序博客网 时间:2024/03/29 15:22
//File类
/*
File类
 不属于流对象,作用:将机器上的路径和目录封装成一个对象,File对象,提供了很多的方法和成员变量,让我们操作目录和路径
  目录就是文件夹,路径。对于类中的方法熟知,File类需要和IO流对象配合使用
File类的静态成员变量
 一共提供的4个变量,掌握的只有2个,跨平台
  static String separator  结果\ Windows目录分隔符  Linux下 /
static String pathSeparator 结果 ; Windows下的路径与路径之间的分隔符 Linux :
File类的构造方法
  File(String pathname) 将一个字符串的路径,封装成File对象.只复杂把路径封装成对象,至于路径有没有,够造方法不考虑。(参数写到文件夹,写到文件也行)
  File(String parent,String child)传递两个,字符串格式父路径,字符串格式子路径
  File(File parent,String child)传递两个,File类型父路径,字符串格式子路径
File类的创建功能
  boolean createNewFile()创建新文件,创建成功返回true,所创建的文件是File构造方法中封装的文件,文件已经存在,不会创建,只能创建文件
boolean mkdir()创建目录,文件夹,创建成功返回true,创建的是File构造方法中封装的路径,目录存在,不在创建了
  boolean mkdirs()创建多级目录
File类的删除方法
  boolean delete()删除File构造方法中封装的路径,成功返回true,不走回收站。删除目录必须保证目录是空的
  void deleteOnExit()延迟删除,等待JVM退出之前,在删除
File类的判断方法
boolean exists()判断File构造方法中封装的路径是否存在,如果存在返回true
boolean isAbsolute()判断File构造方法中封装的路径,是不是绝对路径,如果是绝对路径返回true
boolean isDirectory()判断File构造方法中封装的是目录还是文件,如果是目录返回true
boolean isFile()判断File构造方法中封装的是不是文件,如果是文件返回true
  boolean isHidden()判断File构造方法中封装的路径是不是隐藏属性,如果是发回true
File类的获取方法get开头
String getName()获取的是File构造方法中封装的路径的最后那个部分的名字
String getParent()获取File构造方法中封装的路径的父路径,返回String
File getParentFile()获取File构造方法中封装的路径的父路径,返回File对象
String getPath()将你File封装的路径,变成字符串
File getAbsoluteFile()获取File构造方法封装的路径的绝对路径,返回File对象
  String getAbsolutePath()获取File构造方法封装的路径的绝对路径,返回String对象
File的获取方法,包含list
static File[] listRoots()返回系统的根目录
String[] list()获取File对象中封装的路径下的全部目录和文件夹,返回String数组
File[] listFiles()获取File对象中封装的路径下的全部目录和文件夹,返回File数组,返回的是封装路径下的全部内容的全路径,可以继续使用File类的方法
  File[] listFileFileFilter filter)参数是文件过滤器,可以实现过滤想要的文件


File类的其他方法
  boolean renameTo(File file)对File构造方法中的封装的文件重命名,命名成功返回true,如果修改后的路径不同,出现剪切效果
  long lastModified()获取File构造方法中封装的文件的最后修改时间的毫秒值
递归
  递归只是一种编程手段而已,C C++ C# php java
  递归就是方法的自身调用,自己调用自己  public static void a(){  a();  }
  从前有个山,山里有庙,庙里有个老和尚讲故事,讲的是从前有座山,山里有个庙...
  什么时候可以使用递归:当你发现一个功能,运算的主体不变,但是,每次运算的参数都在变化,考虑使用递归实现功能
   注意:
    递归必须要有条件限制
    递归不能太深,方法进栈次数不能过多,否则出现栈内存溢出
*/
//复制一个文件夹
//里面有多层目录,采用递归的方法进行复制
import java.io.*;


public class CopyDir {
public static void main(String[] args) {
//定义源和目的
File source=new File("c:\\fuzhiwenjianjia");
File target=new File("e:");
Copy(source,target);
}
public static void Copy(File source,File target){
//判断是不是文件夹,是的话创建目的同名文件夹
if(source.isDirectory()){
File files=new File(target,source.getName());
files.mkdirs();
//获取目录内的所有文件
File[] dir=source.listFiles();
//遍历数组
for(File s:dir){
//递归
Copy(s,files);
}
}else{//不是目录的话进行复制
File f=new File(target,source.getName());
MyCopy(source,f);
}
}
public static void MyCopy(File source,File target){
FileInputStream fis=null;
FileOutputStream fos=null;
try{
fis=new FileInputStream(source);
fos=new FileOutputStream(target);
byte[] bytes=new byte[1024*1024];
int len=0;
while((len=fis.read(bytes))!=-1){
fos.write(bytes, 0, len);
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("目录复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
0 0
原创粉丝点击