码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员------Java中File类学习总结

时间:2015-02-23 13:05:10      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!

File类

  1、用来将文件或者文件夹封装成对象,以方便对文件和文件夹进行操作。

  2、File对象可以作为参数传递给流的构造函数。

File对象功能:

  创建和删除:

  1、boolean createNewFile(): 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

  2、boolean mkdir():创建此抽象路径名指定的目录。

  3、boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

  4、boolean delete():删除此抽象路径名表示的文件或目录。

  5、boolean deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

示例代码:

import java.io.File; 
import java.io.IOException; 
public class Test{
  public static void main(String...args) throws Exception { 
    File f = new File("C:\\文件夹\\1.Java"); 
    File f1 = new File("C:\\文件夹");  
    File f2 = new File("C:"+File.separator+"1.java");//separator与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。     
//创建一个目录。     f1.mkdir();     //创建一个文件夹,如果传入文件名中还有文件夹,会自动创建根文件夹和子文件夹。     f.mkdirs();     /*     调用文件的创建方法,如果该文件的目录不存在,那么将报异常,     如果该文件存在的话,就不创建文件,如果不存在就创建该文件。      */     f.createNewFile();          //休息4秒种     Thread.sleep(4000);         //创建了一个文件,如果虚拟机退出,那么该文件将自动删除。     f.deleteOnExit();   }   public static void sop(Object obj){     System.out.println(obj);   } }

  判断:

  1、boolean exists():测试此抽象路径名表示的文件或目录是否存在。

  2、boolean isAbsolute():测试此抽象路径名是否为绝对路径名。

  3、boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。

  4、boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。

  5、boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。

示例代码:

import java.io.File; 
import java.io.IOException; 
public class Test{
  public static void main(String...args)throws IOException{ 
    File f = new File("C:\\1.Java"); 
    //是否是可执行文件 
    sop(f.canExecute()); 

    //文件是否存在 
    sop(f.exists()); 

    //是否是一个文件 
    sop(f.isFile()); 

    //是否是一个目录 
    sop(f.isDirectory());
    
//是否是隐藏文件     sop(f.isHidden());   }   public static void
sop(Object obj){     System.out.println(obj);   } }

  获取:

  1、File getAbsoluteFile():返回此抽象路径名的绝对路径名形式。

  2、String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。

  3、File getCanonicalFile():返回此抽象路径名的规范形式。

  4、String getCanonicalPath():返回此抽象路径名的规范路径名字符串。

  5、long getFreeSpace():返回此抽象路径名指定的分区中未分配的字节数

  6、String getName():返回由此抽象路径名表示的文件或目录的名称。

  7、String getParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 

  8、File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null

  9、String getPath():将此抽象路径名转换为一个路径名字符串。

  10、boolean renameTo(File dest):重新命名此抽象路径名表示的文件。

  11、static File[]  listRoots():列出可用的文件系统根。

  12、String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

代码示例:

import java.io.File; 
public classTest{ 
  public static void main(String...args){ 
    File[] file = File.listRoots(); 
    for(File f : file){ 
       System.out.println(f); 
    } 
    File f
= new File("G:\\");     String[] name = f.list();     for
(String fileName : name){       System.out.println(fileName);     }   } }

应用实例1:

  需求:列出一个目录下的所有内容的代码:

/*
列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现还是目录的话,还可以在此调用本功能
也就是函数自身调用自身,
这种表现形式,或者编程手法,成为递归 

递归要注意:
1、限制条件
2、要注意递归次数,避免内存溢出
*/ 
import java.io.File; 
public class Test{ 
  public static void main(String...args){ 
    File dir = new File("D:\\Demo"); 
    dir(dir,0); 
  } 
  //求文件层级的函数
  public static String getLevel(int level){ 
    StringBuilder sb = new StringBuilder(); 
    for(int x=0;x<level;x++){ 
      sb.append("  "); 
    } 
    return sb.toString(); 
  }
  //列出目录下所有内容的函数 
  public static void dir(File dir,int level){ 
    sop(getLevel(level)+dir); 
    level++; 
    File[] files = dir.listFiles(); 
    for(Filefile:files){ 
    if(!file.isHidden()){ 
      if(file.isDirectory()) 
        dir(file,level); 
      else 
        sop(getLevel(level+1)+file); 
      } 
    } 
  } 
  public static void sop(Object obj){ 
    System.out.println(obj); 
  } 
} 

应用示例2:

  需求:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。

/*
练习
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
建立一个java文件列表文件。
思路:
1,对指定的目录进行递归。
2,获取递归过程所以的java文件的路径。
3,将这些路径存储到集合中。
4,将集合中的数据写入到一个文件中。
*/
import java.io.*;
import java.util.*;
class  JavaFileList
{
    public static void main(String[] args) throws IOException
    {    
        File dir = new File("d:\\java1223");
        List<File> list = new ArrayList<File>();
        fileToList(dir,list);
        //System.out.println(list.size());

        File file = new File(dir,"javalist.txt");
        writeToFile(list,file.toString());
    }
public static void fileToList(File dir,List<File> list) { File[] files = dir.listFiles(); for(File file : files) { if(file.isDirectory()) fileToList(file,list); else { if(file.getName().endsWith(".java")) list.add(file); } } } public static void writeToFile(List<File> list,String javaListFile)throws IOException { BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(javaListFile)); for(File f : list) { String path = f.getAbsolutePath(); bufw.write(path); bufw.newLine(); bufw.flush(); } } catch (IOException e) { throw e; } finally { try { if(bufw!=null) bufw.close(); } catch (IOException e) { throw e; } } } }

总结:File中注意:

1、File.speparator的作用是判断在不同的系统中斜杠的方向

    在windows中斜杠的方向是向右斜的\\
    在Linux  中斜杠的方向是向左斜的//

2、delete()方法可以删除一个文件或者一个整个文件夹(整个目录),返回结果是布尔类型。

    不论是创建文件、创建目录还是删除文件,只有在动作真正发生的时候会返回true。

 

黑马程序员------Java中File类学习总结

标签:

原文地址:http://www.cnblogs.com/alvis2015/p/4297956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!