[学习笔记]File类简单用法!

今天我们学习一下java中的File类

相应的API文档:File类

以下是本人做的一些整理:

下面的构造函数可以用来生成File 对象:
         
File(File parent, String child) 
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri) 
          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

一:File类的方法详解

   File file1 = new File ("C://temp//myNote.txt"); // in Windows  这是windows文件系统下的方法
   File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix        unix文件系统的方法
   在不同的操作系统中,文件之间的分隔符表示方式不一样的,为了安全起见,我们可以使用File.separator来表示分隔符
最安全的建立文件的方法:

    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_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();//设置为只读


二:File类的实例应用


1. 创建文件和目录

编写代码创建一个目录E:\test,下面含有两个文件1.txt,2.txt 和一个目录dir,dir目录下有两个文件3.txt和4.txt 

[java]  view plain  copy
  1. <span style="font-family:SimSun;font-size:18px;"public static  void createDirectory(){  
  2.         System.out.println("**********************");  
  3.         File f=new File("E:"+File.separator+"test");   //File.separator为文件分隔符,在windows下为\  
  4.         System.out.println("create directory...");  
  5.         f.mkdir();     //创建目录  
  6.         File file1=new File(f,"1.txt");    //在目录test下创建两个文件  
  7.         File file2=new File(f,"2.txt");  
  8.         try {  
  9.             file1.createNewFile();  
  10.             file2.createNewFile();  
  11.         } catch (IOException e) {  
  12.             // TODO Auto-generated catch block  
  13.             e.printStackTrace();  
  14.         }   //创建文件  
  15.               
  16.         File f2=new File(f,"dir");    //在目录test下创建目录dir  
  17.         f2.mkdir();       
  18.         File file3=new File(f2,"3.txt");   //创建文件  
  19.         File file4=new  File(f2,"4.txt");  
  20.         try {  
  21.             file3.createNewFile();  
  22.             file4.createNewFile();  
  23.         } catch (IOException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.         //测试创建的File对象:是文件还是文件夹  
  28.         System.out.println("f is file? " +f.isFile());    //false  
  29.         System.out.println("f is directory? "+ f.isDirectory());    //true  
  30.         System.out.println("file1 is file? " +file1.isFile());   //true  
  31.         System.out.println("file2 is file? " +file1.isFile());   //true  
  32.         System.out.println("f2 is file? " +f.isFile());    //false  
  33.         System.out.println("f2 is directory? "+ f.isDirectory());    //true  
  34.         System.out.println("file3 is file? " +file1.isFile());   //true  
  35.         System.out.println("file3 is file? " +file1.isFile());   //true       
  36.     }</span>  


2. 列出目录下所有的文件名

    编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)。(使用递归来实现)

[java]  view plain  copy
  1. public class FileTree {  
  2.     public static void main(String[] args) {  
  3.         //找一个自己硬盘上有用的文件夹  
  4.         File f = new File("e:/test");  
  5.         printFile(f, 0);  
  6.     }  
  7.     //树状结构打印  
  8.     static void printFile(File file,int level){  
  9.         for (int i = 0; i < level; i++) {  
  10.             System.out.print("-");  
  11.         }  
  12.         System.out.println(file.getName());   
  13.           
  14.         if(file.isDirectory()){  
  15.             File[]  files = file.listFiles();  
  16.             for (File temp : files) {  
  17.                 printFile(temp, level+1);  
  18.             }  
  19.         }  
  20.     }  
  21. }  
显示结果:

test
-1.txt
-2.txt
-dir
--3.txt
--4.txt


3. 列出目录下所有的文件路径

   编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)的路径。(使用递归来实现)

[java]  view plain  copy
  1. public class FileTree {  
  2.     public static void main(String[] args) {  
  3.         //找一个自己硬盘上有用的文件夹  
  4.         File f = new File("e:/test");  
  5.         printFilePath(f, 0);  
  6.     }  
  7.   
  8.     static void printFilePath(File file,int level){  
  9.         for (int i = 0; i < level; i++) {  
  10.             System.out.print("-");  
  11.         }  
  12.         System.out.println(file.getPath());   
  13.           
  14.         if(file.isDirectory()){  
  15.             File[]  files = file.listFiles();  
  16.             for (File temp : files) {  
  17.                 printFilePath(temp, level+1);  
  18.             }  
  19.         }  
  20.     }  
  21. }  

显示结果:

e:\test
-e:\test\1.txt
-e:\test\2.txt
-e:\test\dir
--e:\test\dir\3.txt
--e:\test\dir\4.txt


4. 删除一个文件(包含文件里的目录)

[java]  view plain  copy
  1. <span style="font-family:SimSun;font-size:18px;">public class FileDeleteAllFile {  
  2.     public static void main(String[] args) {  
  3.         //找一个自己硬盘上有用的文件夹  
  4.         File f = new File("e:/test");  
  5.         deleteAll(f);  
  6.           
  7.     }  
  8.       
  9.     public static void deleteAll(File file){  
  10.         if(!file.exists())   
  11.             return ;  
  12.           
  13.         //为文件或者目录为空  
  14.         if(file.isFile()||file.list().length==0){  
  15.             file.delete();  
  16.             return;  
  17.         }else{  
  18.             File[] files=file.listFiles();  
  19.             for(File f:files){  
  20.                 deleteAll(f);  
  21.             }  
  22.             file.delete();  
  23.         }  
  24.           
  25.     }  
  26. }</span>  




//第二部分

  1. import java.io.File;  
  2. import java.io.IOException;  
  3.   
  4. public class TestFile {  
  5.       
  6.     public void createFile(String path){  
  7.         File file=new File(path);  
  8.         if(!file.exists()){//判断文件是否存在  
  9.             try {  
  10.                 file.createNewFile();  //创建文件  
  11.                   
  12.             } catch (IOException e) {  
  13.                 // TODO Auto-generated catch block  
  14.                 e.printStackTrace();  
  15.             }  
  16.         }  
  17.         /*获取文件名*/  
  18.         String name=file.getName();  
  19.         /*获取文件路径*/  
  20.         String path_=file.getPath();  
  21.         /*获取绝对路径名*/  
  22.         String absPath=file.getAbsolutePath();  
  23.         /*获取父亲文件路径*/  
  24.         String parent=file.getParent();  
  25.         /*文件大小*/  
  26.         long size=file.length();  
  27.         /*最后一次修改时间*/  
  28.         long time=file.lastModified();  
  29.         System.out.println("文件名:"+name);  
  30.         System.out.println("文件路径:"+path_);  
  31.         System.out.println("文件的绝对路径:"+absPath);  
  32.         System.out.println("文件的父文件路径:"+parent);  
  33.         System.out.println("文件的大小:"+size);  
  34.         System.out.println("文件最后一次修改时间:"+time);  
  35.         //file.delete();   //删除文件  
  36.           
  37.     }  
  38.       
  39.     public void createDir(String path){  
  40.         File file=new File(path);  
  41.         if(!file.exists()){  
  42.             file.mkdirs();  //创建文件夹  
  43.         }  
  44.           
  45.         //file.delete();  若文件夹为空,则删除文件夹  
  46.           
  47.     }  
  48.       
  49.     /** 
  50.      * 遍历文件夹中的文件并显示 
  51.      */  
  52.     public void fileTest(String path){  
  53.         File file=new File(path);  
  54.         File[] files=file.listFiles();  
  55.         //System.out.println(files.length);  
  56.           
  57.         for (File f : files) {  
  58.             if(f.isFile()){  
  59.                 System.out.println(f.getName()+"是文件!");  
  60.             }else if(f.isDirectory()){  
  61.                 fileTest(f.getPath());  
  62.             }  
  63.         }  
  64.           
  65.     }  
  66.       
  67.     public void reFileName(String fromPath,String toPath){  
  68.         File file1=new File(fromPath);  
  69.         File file2=new File(toPath);  
  70.         /*判断file2文件夹路径存在与否,不存在则创建*/  
  71.         if(!file2.exists()){  
  72.             new File(file2.getParent()).mkdirs();  
  73.         }  
  74.         file1.renameTo(file2);  //修改文件名  
  75.     }  
  76.   
  77.     public static void main(String[] args) {  
  78. //      File file=new File("E:\\myjava\\1.txt");  //  Window路径\\  
  79. //      File flie_=new File("E:/myjava","1.txt"); //linux路径 /  
  80. //        
  81.         TestFile tf=new TestFile();  
  82.         //tf.createFile("E:\\myjava\\1.txt");  
  83.         //tf.fileTest("E:/wepull");  
  84.         //tf.createDir("e:/sunxiao/abc/1.txt");  
  85.         //tf.reFileName("E:\\my\\2.txt","E:\\myjava\\1.txt");  
  86.         tf.copyFlie("E:\\myjava","F:\\");  
  87.     }  
  88.   
  89.     private void copyFlie(String src, String to) {  
  90.         File file1=new File(src);  
  91.         String topath=to+"\\"+file1.getName();  
  92.         File file2=new File(topath);  
  93.         if(!file2.exists()){  
  94.             file2.mkdirs();  
  95.         }  
  96.         System.out.println(topath);  
  97.         File[] file=file1.listFiles();  
  98.         for (File f : file) {  
  99.             if(f.isFile()){  
  100.                 String path2=topath+"\\"+f.getName();  
  101.                 Creatfile(path2);  
  102.             }else if(f.isDirectory()){  
  103.                 String s=f.getPath();  
  104.                 copyFlie(s,topath);  
  105.             }  
  106.         }  
  107.           
  108.     }  
  109.   
  110.     private void Creatfile(String path2) {  
  111.         File file3=new File(path2);  
  112.         if(!file3.exists()){//判断文件是否存在  
  113.             try {  
  114.                 file3.createNewFile();  //创建文件  
  115.                   
  116.             } catch (IOException e) {  
  117.                 // TODO Auto-generated catch block  
  118.                 e.printStackTrace();  
  119.             }  
  120.         }  
  121.     }  
//第三部分

由于一直在使用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;
/**
* 文件过滤器过滤类
* @author fb
*/
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;
/**
* 文件过滤器   运行函数
* @author fb
*/
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;
/**
* @author fb  www.cujava.com
* 文件操作里Java 1.6 新功能:查询磁盘空间
*/
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();
      }
  }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种广泛使用的编程语言,有简单、面向对象、跨平台等特点。下面是Java学习的一些重要知识点和学习笔记: 1. Java基础: - 数据型:Java提供了多种数据型,包括基本数据型和引用数据型。 - 控制流程:学习如何使用条件语句(if-else、switch)、循环语句(for、while)等控制程序的流程。 - 数组:了解如何声明、初始化和操作数组。 - 方法:学习如何定义和调用方法,以及方法的参数和返回值。 - 和对象:理解和对象的概念,学习如何定义、创建对象和使用的成员变量和方法。 - 继承和多态:掌握继承和多态的概念,了解如何使用继承创建子,并实现方法的重写和多态的应用。 2. 面向对象编程: - 封装:学习如何使用访问修饰符(public、private、protected)来控制的成员的访问权限。 - 继承:了解继承的概念和作用,学习如何使用extends关键字创建子。 - 多态:理解多态的概念和实现方式,学习如何使用父引用指向子对象,实现方法的动态绑定。 3. 异常处理: - 异常的分:了解异常的分(Checked Exception和Unchecked Exception)和常见的异常型。 - 异常处理机制:学习如何使用try-catch语句捕获和处理异常,以及使用throws关键字声明方法可能抛出的异常。 4. 输入输出: - 文件操作:学习如何读写文件,包括使用File、字节流和字符流等。 - 序列化:了解对象的序列化和反序列化,学习如何将对象保存到文件或网络中。 5. 集合框架: - 学习Java提供的集合框架,包括List、Set、Map等常用的集合,以及它们的特点和用法。 6. 多线程编程: - 学习如何创建和管理线程,了解线程同步和线程间通信的方法。 7. 数据库连接: - 学习如何使用Java连接数据库,执行SQL语句,进行数据的增删改查操作。 以上是Java学习的一些重要知识点和学习笔记,希望对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值