java基础文件,File类

此文参考自"Java SE程序设计"

   编著: 青岛东合信息技术有限公司 

算是做笔记,以后想看可以翻阅,顺便分享出来大家可以参照.如有侵权,请联系本人删除

文件 

  文件是相关记录或放在一起的集合,可以存储在硬盘,光盘,移动存储设备上,存储形式是文本文档,图片,程序等,在编程的过程中经常会对文件进行各种的处理

file类

  java.io提供了一系列的类用于对底层系统中的文件进行处理.其中File类是最重要的一个类,该类可以获取文件信息,也可以对文件进行管理.File对象既可以表示文件,也可以表示目录,利用这一特性可以对文件,目录及其属性进行基本操作.File类提供了许多的方法,通过方法可以获得与文件相关的信息,如名称,最后修改日期,文件大小等.

File常用的方法
File(String pathname) 构造方法,用于创建一个指定路径名的File对象                                                       
boolean canRead() 判断文件或者目录是否可读
boolean createNewFile() 自动创建一个File对象指定文件名的空文件,只有在指定文件名文件不存在的时候才能成功
boolean delete() 删除File对象,对应的文件或目录
boolean exists() 判断File对象对应的文件或目录是否存在
String getAbsolutePath() 获取File对象对应的文件或目录的绝对路径
String getName() 获取File对象对应的文件或目录的名称
String getPath() 获取File对象对应的文件或目录的路径
boolean isDirectory() 判断File对象指向的是否为一个目录
boolean isFile() 判断File对象指向的是否为一个文件
long length() 返回File对象指向的文件大小,单位为字节
boolean mkdir() 新建一个File对象所定义的一个路径,如果新建成功,返回true,否则返回false,此时File对象必须是目录对象
boolean renameTo(File dest) 重命名File对象对应的文件,如果命名成功,返回true,否则返回false
long lastModified() 返回File对象的最后一次被修改时间

  例子:对File常用方法的部分使用

 1 package file类;
 2 
 3 import java.io.*;
 4 import java.util.*;
 5 public class FlieDemo {
 6     public static void main(String args[]) {
 7         System.out.println("请输入文件名:");
 8         Scanner  sanner = new Scanner(System.in);
 9         //从控制台输入文件路径名
10         String pathName = sanner.next();
11         //根据路径字符串创建一个File对象
12         File file = new File(pathName);
13         //如果文件不存在,则创建一个
14         if(!file.exists()) {
15             try {
16                 file.createNewFile();
17             }catch(IOException e) {
18                 e.printStackTrace();
19             }
20         }
21         System.out.println("文件是否存在:"+file.exists());
22         System.out.println("是文件么:"+file.isFile());
23         System.out.println("是目录么:"+file.isDirectory());
24         System.out.println("名称:"+file.getName());
25         System.out.println("路径:"+file.getPath());
26         System.out.println("绝对路径:"+file.getAbsolutePath());
27         System.out.println("最后修改的时间:"+new Date(file.lastModified()).toString());
28         System.out.println("文件大小:"+file.length());
29     }
30 }

  执行结果

请输入文件名:
text.txt
文件是否存在:true
是文件么:true
是目录么:false
名称:text.txt
路径:text.txt
绝对路径:C:\Users\Administrator\eclipse-workspace\File类的使用\text.txt
最后修改的时间:Sun Jun 10 16:10:38 CST 2018
文件大小:0

  注意:File对象只是一个引用,他可能指向一个存在的文件,也可能指向一个不存在的文件,并且File对象不但可以表示一个文件,还可以表示某个目录.

File类的list方法
String[] list()                                                                  当File对象为目录时,返回该目录下的所有文件及子目录                                                                                                                                    
File[] listFiles() 返回File对象对应路径下的所有文件所有文件对象数组                                                          

  举例:将JDK根目录下的目录或文件的名称列举出来

 1 package file类的list方法;
 2 
 3 import java.io.File; 
 4 public class ListDemo {
 5     public static void main(String args[]) {
 6         //根据路径名称创建File对象
 7         File file = new File("F:\\Java\\jdk1.8.0_91");
 8         //得到文件名列表
 9         if(file.isDirectory()) {
10             String[] fileNames = file.list();
11             //利用for-each打印各个名称
12             for(String fileName: fileNames) {
13                 System.out.println(fileName);
14             }
15         }
16     }
17 }

  上述代码中路径字符串双斜杠解释:"\\",第一个"\"是转义符,第二个"\"是反斜杠

  执行结果

bin
COPYRIGHT
db
include
javafx-src.zip
jre
lib
LICENSE
README.html
release
src.zip
THIRDPARTYLICENSEREADME-JAVAFX.txt
THIRDPARTYLICENSEREADME.txt

  看结果:list()方法将JDK根目录的文件或目录都列举出来了,但是没有标明哪个是目录,哪个是文件.

  例子:用listFile()方法将JDK将根目录文件和目录都列举出来并标明

 1 package file类的list方法;
 2 
 3 import java.io.File;
 4 public class ListFlieDemo {
 5     public static void main(String args[]) {
 6         //根据路径名称创建File对象
 7         File file = new File("F:\\Java\\jdk1.8.0_91");
 8         //得到文件名列表
 9         if(file.isDirectory()) {
10             File[] files = file.listFiles();
11             //利用for-each获取每一个File 对象
12             for(File f : files) {
13                 if(f.isFile())  
14                 System.out.println("文件:"+f);
15                 else 
16                 System.out.println("目录:"+f);
17             }
18         }
19     }
20 }

  执行结果

目录:F:\Java\jdk1.8.0_91\bin
文件:F:\Java\jdk1.8.0_91\COPYRIGHT
目录:F:\Java\jdk1.8.0_91\db
目录:F:\Java\jdk1.8.0_91\include
文件:F:\Java\jdk1.8.0_91\javafx-src.zip
目录:F:\Java\jdk1.8.0_91\jre
目录:F:\Java\jdk1.8.0_91\lib
文件:F:\Java\jdk1.8.0_91\LICENSE
文件:F:\Java\jdk1.8.0_91\README.html
文件:F:\Java\jdk1.8.0_91\release
文件:F:\Java\jdk1.8.0_91\src.zip
文件:F:\Java\jdk1.8.0_91\THIRDPARTYLICENSEREADME-JAVAFX.txt
文件:F:\Java\jdk1.8.0_91\THIRDPARTYLICENSEREADME.txt
具有过滤条件的list方法
String[] list(FilenameFilter filter)                  返回一个字符串数组,这些字符串为此File对象对应的目录中满足指定过滤条件的文件和子目录                                                     
File[] listFiles(FilenameFilter filter) 返回File对象数组,这些File对象为此File对象对应的目录中满足指定过滤条件的文件和子目录

  注意:FileNameFilter是一个接口,她只有一个accept()方法,所以只需要定义一个类来实现这个接口,或者可以定义一个匿名类.

  举例:利用list()方法列举JDK根目录下的所有以html或htm为后缀的网页文件

 1 package file类的list方法;
 2 
 3 import java.io.*;
 4 public class HtmlList {
 5     public static void main(String args[]) {
 6         //根据路径名称创建File对象
 7         File file = new File("F:\\Java\\jdk1.8.0_91");
 8         //得到文件名列表
 9         if(file.exists() && file.isDirectory()) {
10             //创建FileNameFilter类型的匿名类,并作为参数传入到list方法中
11             String[] fileNames = file.list(new FilenameFilter() {
12                     public  boolean accept(File dir,String name) {
13                         //如果文件的后缀名为.html或.htm则满足条件
14                         return (name.endsWith(".html") || name.endsWith(".htm"));
15                     }
16                 });
17             for(String fileName: fileNames) {
18                 System.out.println(fileName);
19             }
20         }
21     }
22 }

  执行结果

README.html

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/Mykebai/p/9161656.html