你的位置:首页 > Java教程

[Java教程]I/O流——File类及使用


I/O框架介绍

I/O是计算机输入/输出的接口。Java的核心库java.io提供了全方面的I/O接口,包括:文件系统的操作,文件读写,标准设备的输出等。

File类及使用

①   一个File类的对象,表示了磁盘上的文件或目录。

②   File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

③   File类直接处理文件和文件系统。比如删除文件,获取文件长度大小信息。

④   File类没有提供方法从文件中读取或向文件中存储信息。

⑤   构造方法:

a)         File(String directoryPath)

b)         File(String directoryPath,String filename)

c)         File(File dirObj,String filename)

⑥   File定义了获取File对象标准属性的方法。

⑦   部分File类常用方法:

a)         public String getName()

b)         public String getParent()

c)         public File getParentFile()

d)         public String getAbsolutePath()

e)         public boolean exists()

f)          public File[] listFile()

g)         public boolean isDirectory()

h)         public boolean isFile()

i)           public long length()

j)           boolean delete()

k)         boolean mkdir()

 

 

先在d盘下创建一个名为doc的文件夹,文件夹内创建一个txt文本文件

1     File file = new File("d:\\doc");// windows下使用\\或/,linux下使用/2     System.out.println(file.getAbsolutePath());// 返回此抽象路径名的绝对路径名字符串3     System.out.println(file.getParent());// 获取上一级目录的字符串4     System.out.println(file.isDirectory());// 判断路径名表示的文件是否是一个目录5     System.out.println(file.isFile());// 判断路径名表示的文件是否是一个标准文件6     System.out.println(file.exists());// 判断抽象路径名表示的文件或目录是否存在7     System.out.println(file.length());// 返回由此抽象路径名表示的文件的长度8     System.out.println(file.delete());// 删除此抽象路径名表示的文件或目录--若目录下存在文件则不可删除

输出结果

d:\doc
d:\
true
false
true
0
false

 

创建目录及目录下创建文件

1     File myFile = new File("d:\\zhangsan");2     System.out.println(myFile.mkdir());// 创建不存在的目录3 4     File myFile2 = new File("d:\\zhangsan\\ceshi.txt");5     try {6       System.out.println(myFile2.createNewFile());// 创建指定目录下不存在的文件7     } catch (IOException e) {8       e.printStackTrace();9     }

输出结果

true
true

 

在zhangsan目录下的ceshi.txt中随意输入一些字符,再添加一张图片

获取目录下所有的文件

1     String[] files = myFile.list();// 获取目录下所有的文件2     for (String f : files) {3       System.out.println(f);4     }

输出结果

ceshi.txt
tu.png

 

返回所有以txt为后缀名的文件

 1     String[] files2 = myFile.list(new FilenameFilter() { 2  3       @Override 4       public boolean accept(File dir, String name) { 5         return name.endsWith(".txt");//返回所有以txt为后缀名的文件 6       } 7     }); 8     for (String f : files2) { 9       System.out.println(f);10     }

输出结果

ceshi.txt

 

获取目录中所有的文件,名称及大小

1     File[] files3=myFile.listFiles();2     for(File f:files3){3       System.out.println(f.getName()+"--"+f.length());4     }

输出结果

ceshi.txt--140
tu.png--73425

 

返回目录下所有以txt为后缀名的文件,名称及大小

方法一

 1     File[] files4=myFile.listFiles(new FilenameFilter() { 2        3       @Override 4       public boolean accept(File dir, String name) { 5         return name.endsWith(".txt");//返回目录下所有以txt为后缀名的文件 6       } 7     });     8     for(File f:files4){ 9       System.out.println(f.getName()+"--"+f.length());10     }

输出结果

ceshi.txt--140

 

方法二

 1     File[] files5=myFile.listFiles(new FileFilter() { 2        3       @Override 4       public boolean accept(File pathname) { 5         return pathname.getName().endsWith(".txt"); 6       } 7     });     8     for(File f:files5){ 9       System.out.println(f.getName()+"--"+f.length());10     }

输出结果

ceshi.txt--140