文件操作类主要是使用File类的各种方法对文件和目录进行操作。包括文件名、文件长度、最后修改时间和是否只读等,提供获得当前文件的路径名、判断文件是否存在、创建、删除文件和目录等一系列的操作方法。
下面一段代码实现了读取当前目录及子目录文件列表的功能。
1 public class IOtestFile { 2 public static void main(String[] args) { 3 new FileList(); 4 } 5 6 static class FileList{ 7 int count_dirs=0, count_files=0; 8 long byte_files=0; 9 public FileList(){ 10 count(new File("."));//创建当前目录 11 System.out.println("共有" + count_files + "个文件,总字节数为: " + byte_files + "B"); 12 System.out.println("共有" + count_dirs + "个目录"); 13 } 14 private void count(File dir) { //dir目录中文件列表,递归算法 15 // TODO Auto-generated method stub 16 System.out.println("当前目录的绝对路径:" + dir.getAbsolutePath()); 17 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm"); 18 File[] files = dir.listFiles(); //返回当前目录中所有文件 19 for(int i=0; i<files.length; i++){ //目录和文件列表 20 System.out.print(files[i].getName() + "\t"); 21 if(files[i].isFile()){ 22 System.out.print(files[i].length() + "B\t"); 23 count_files ++; 24 byte_files += files[i].length(); 25 }else{ 26 System.out.print("<DIR>\t"); 27 count_dirs ++; 28 } 29 System.out.println(sdf.format(new Date(files[i].lastModified()))); //显示文件修改时间 30 } 31 for(int i=0; i<files.length; i++){ 32 if(files[i].isDirectory()){ 33 count(files[i]); 34 } 35 } 36 } 37 } 38 }
在我自己的电脑上的运行结果如下
当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\. .classpath 301B 2016-11-16 11:18 .project 381B 2016-11-16 11:15 .settings <DIR> 2017-08-12 07:23 bin <DIR> 2017-08-12 07:24 fibText.txt 87B 2017-08-15 07:27 fileInt.txt 96B 2017-08-15 03:04 info.txt 44B 2017-08-15 02:50 io.txt 10B 2017-08-15 02:41 io2.txt 44B 2017-08-15 02:50 src <DIR> 2017-08-12 07:23 students.dat 150B 2017-08-15 03:44 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\.settings org.eclipse.jdt.core.prefs 598B 2016-11-16 11:19 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin cn <DIR> 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn itcast <DIR> 2017-08-15 12:58 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast bat <DIR> 2017-08-12 07:24 copy <DIR> 2017-08-12 07:24 factory <DIR> 2017-08-12 07:24 io <DIR> 2017-08-15 08:18 list <DIR> 2017-08-13 07:58 observer <DIR> 2017-08-12 07:24 reflect <DIR> 2017-08-12 07:24 regex <DIR> 2017-08-14 08:08 single <DIR> 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\bat Demo1.class 544B 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\copy Address.class 396B 2017-08-12 08:37 Demo1.class 1229B 2017-08-12 07:26 Demo2.class 2070B 2017-08-12 07:26 Person.class 1427B 2017-08-12 08:37 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\factory BMW.class 277B 2017-08-12 10:34 BSJ.class 277B 2017-08-12 10:34 Car.class 272B 2017-08-12 10:34 Demo1.class 2419B 2017-08-12 10:34 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\io IOtestBit$ByteFile.class 2057B 2017-08-15 07:12 IOtestBit$IntFile.class 1909B 2017-08-15 07:12 IOtestBit$objectFile.class 1955B 2017-08-15 07:12 IOtestBit$Student.class 843B 2017-08-15 07:12 IOtestBit.class 1964B 2017-08-15 07:12 IOtestChar$TextFile.class 1727B 2017-08-15 07:27 IOtestChar.class 712B 2017-08-15 07:27 IOtestFile$FileList.class 2186B 2017-08-15 08:20 IOtestFile.class 494B 2017-08-15 08:20 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\list Demo1.class 1197B 2017-08-12 08:59 Demo2.class 1683B 2017-08-13 08:13 StackList.class 1025B 2017-08-12 08:59 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\observer Emp.class 1363B 2017-08-12 07:24 Student.class 1320B 2017-08-12 07:24 Weather.class 162B 2017-08-12 10:08 WeatherMain.class 1028B 2017-08-12 07:24 WeatherStation$1.class 1451B 2017-08-12 07:24 WeatherStation.class 1736B 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\reflect Demo1.class 1436B 2017-08-12 07:24 Demo2.class 1129B 2017-08-12 07:24 Demo3.class 1049B 2017-08-12 07:24 Demo4.class 1186B 2017-08-12 07:24 Person.class 1409B 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\regex Demo1.class 1931B 2017-08-14 08:08 Demo2.class 1250B 2017-08-14 08:27 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\bin\cn\itcast\single Demo1.class 274B 2017-08-12 07:24 Single.class 561B 2017-08-12 07:24 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src cn <DIR> 2017-08-12 07:23 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn itcast <DIR> 2017-08-15 12:58 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast bat <DIR> 2017-08-12 07:23 copy <DIR> 2017-08-12 07:23 factory <DIR> 2017-08-12 07:23 io <DIR> 2017-08-15 08:04 list <DIR> 2017-08-13 07:58 observer <DIR> 2017-08-12 07:23 reflect <DIR> 2017-08-12 07:23 regex <DIR> 2017-08-14 08:08 single <DIR> 2017-08-12 07:23 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\bat Demo1.java 853B 2016-11-16 11:19 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\copy Demo1.java 851B 2017-08-12 07:26 Demo2.java 1523B 2017-08-12 07:26 Person.java 794B 2017-08-12 08:37 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\factory Demo1.java 1467B 2017-08-12 10:34 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\io IOtestBit.java 4985B 2017-08-15 07:12 IOtestChar.java 1148B 2017-08-15 07:27 IOtestFile.java 1326B 2017-08-15 08:20 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\list Demo1.java 1384B 2017-08-12 08:59 Demo2.java 884B 2017-08-13 08:13 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\observer Emp.java 757B 2016-11-16 11:19 Student.java 644B 2016-11-16 11:19 Weather.java 129B 2017-08-12 10:08 WeatherMain.java 527B 2016-11-16 11:19 WeatherStation.java 1813B 2016-11-16 11:19 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\reflect Demo1.java 1008B 2016-11-16 11:19 Demo2.java 1234B 2016-11-16 11:19 Demo3.java 1074B 2016-11-16 11:19 Demo4.java 723B 2016-11-16 11:19 Person.java 577B 2016-11-16 11:19 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\regex Demo1.java 1450B 2017-08-14 08:08 Demo2.java 1198B 2017-08-14 08:27 当前目录的绝对路径:D:\eclipseworkspace\JavaTest\day27\.\src\cn\itcast\single Demo1.java 793B 2016-11-16 11:19 共有68个文件,总字节数为: 72801B 共有25个目录