黑马程序员技术交流社区

标题: File类详解 [打印本页]

作者: bestcaptain    时间: 2016-2-24 21:07
标题: File类详解
对于Java file功能总是很混乱,今天将Java File的所有功能做一个总结。
Java文件操作我个人认为重要的问题有:
  a:如何跨平台问题
  b:文件编码问题,尤其是多语言平台情况下如何正常工作。
  c:文件读写效率、操作效率
  d:文件加密和文件安全
  e:文件快速检索,强烈建议使用lence进行文件检索及文件管理。
以下是本人做的一些整理:
一:建立文件
   File file1 = new File ("C:\\temp\\myNote.txt"); // in Windows  这是windows文件系统下的方法
   File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix        unix文件系统的方法
最安全的建立文件的方法:
  File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");
   File.separator 是文件路径符号。
  System.out.println(myFile.getName());//取得文件名称的方法
  System.out.println(myFile.getPath());//取得文件路径的方法
  System.out.println(myFile.isAbsolute());//判断文件是否完整
  System.out.println(myFile.getParent());//取得文件的根目录
  System.out.println(myFile.exists());//判断文件是否存在
  System.out.println(myFile.isDirectory());//判断是否是目录
  System.out.println(myFile.isFile());//判断是否是文件
  System.out.println(myFile.isHidden());//判断是否是隐藏文件
  System.out.println(myFile.canRead());//判断是否可读
  System.out.println(myFile.canWrite());//判断是否可写
  File myFile_A = new File("C:" + File.separator);
       for(String s: myFile_A.list()){//读取某个目录下所有文件
       System.out.println(s);
       }
    File myFile_C=new File("d:/test.txt");
           System.out.println(new Date(myFile_C.lastModified()));//最后一次编辑时间
       myFile_C.renameTo(new File("c:/text.txt.bak"));//从命名
       myFile_C.setReadOnly();//设置为只读
二:文件过滤方法
   java提供了很好的文件过滤借口:FilenameFilter 过滤以后的文件可以用listFiles显示出来。效率还是非常高的。
import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;

class FileListFilter implements FilenameFilter {
private String name;
private String extension;
public FileListFilter(String name, String extension) {
   this.name = name;
   this.extension = extension;
}
public boolean accept(File directory, String filename) {
   boolean fileOK = true;
   if (name != null) {
     fileOK = filename.startsWith(name);
   }
   if (extension != null) {
     fileOK = filename.endsWith('.' + extension);
   }
   return fileOK;
}
}
测试方法:
import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;

public class Run_FileListFilter {
public static void main(String[] args) {
     File myDir = new File("d:/");
     FilenameFilter select = new FileListFilter("F", "txt");
     File[] contents = myDir.listFiles(select);
     for (File file : contents) {
       System.out.println(file + " is a " + (file.isDirectory() ? "directory" : "file")
           + " last modified on\n" + new Date(file.lastModified()));
     }
}
}
三:建立目录、文件、临时文件、删除文件或目录
import java.io.File;
import java.io.IOException;
public class MakeDir {

public static void main(String[] args) {
   File myFile=new File("D:/myFubin/");
   if(myFile.mkdir()){//单级目录
     System.out.println("建立目录成功");
   }else{
     System.out.println("建立目录失败");
   }
  
   File myFile_A=new File("D:/myFubin/test/");
   if(myFile_A.mkdirs()){//多级目录
     System.out.println("建立目录成功");
   }else{
     System.out.println("建立目录失败");
   }
  
   File file = new File("d:\\myFubin\\test.txt");
   try {
     file.createNewFile();//建立空文件
   } catch (IOException e) {
     e.printStackTrace();
   }
  
   System.out.println(file.canRead());
  
   if(file.delete()){//删除文件或删除目录
     //删除文件的另外一个方法:file.deleteOnExit() 这种方法是在程序退出的时候将文件删除
     System.out.println("删除成功");
   }else{
     System.out.println("删除失败");
   }
  
   try {
     File  tmp = File.createTempFile("foo", "tmp");//建立临时文件
     System.out.println("刚才建立的临时文件在:" + tmp.getCanonicalPath());
   } catch (IOException e) {
     e.printStackTrace();
   }
  
  
}

}
import java.io.File;

public class SpaceChecker {
  public static void main(String[] args) {
  File[] roots = File.listRoots();//取得所有的根,如果是windows系统那么将取得所有的磁盘
      for (int i = 0; i < roots.length; i++) {
        System.out.println(roots[i]);
        System.out.println("Free space = " + roots[i].getFreeSpace());
        System.out.println("Usable space = " + roots[i].getUsableSpace());
        System.out.println("Total space = " + roots[i].getTotalSpace());
        System.out.println();
      }
  }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2