File 类
File类在java中表示(带路径的)文件或者目录。
File 常用属性和方法
1 public static void main(String[] args) { 2 3 // 给定路径创建File对象 4 // File file = new File("D:"+File.separator+"javatest"+File.separator+"a.txt"); 5 File file = new File("d:\\javatest\\b.mp3"); 6 System.out.println(file); 7 8 // 文件基本属性 9 System.out.println(file.canExecute()); 10 System.out.println(file.canRead()); 11 System.out.println(file.canWrite()); 12 13 // 文件的创建、删除 14 if(!file.exists()) { 15 16 boolean r; 17 try { 18 r = file.createNewFile(); 19 if(r) { 20 System.out.println("文件创建成功"); 21 } 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } 25 } 26 27 // 删除文件 28 file.delete(); 29 }
创建文件时会抛出检查时异常IOException
1 //路径相关 2 public static void main(String[] args) { 3 4 File file = new File("d:\\javatest\\a.txt"); 5 // File file = new File("a.txt"); 6 7 // 获取file的绝对路径 8 System.out.println(file.getAbsolutePath()); 9 // 获取file的创建时的路径字符串 10 System.out.println(file.getPath()); 11 // 获取文件或者目录的名字 12 System.out.println(file.getName()); 13 // 获取文件或者目录的父目录 14 System.out.println(file.getParent()); 15 16 }
1 //目录相关 2 public static void main(String[] args) { 3 4 File file = new File("d:\\javatest\\c\\d\\e"); 5 6 if(!file.exists()) { 7 boolean r; 8 9 try { 10 // 一次只能创建一个目录 11 // r = file.mkdir(); 12 r = file.mkdirs(); 13 if(r) { 14 System.out.println("目录创建成功"); 15 } 16 } catch (Exception e) { 17 e.printStackTrace(); 18 } 19 20 } 21 }
1 //目录的遍历 2 /* 3 list():返回一个file表示的目录中的子目录或者文件,字符串数组类型 4 listFiles():返回一个file表示的目录中的子目录或者文件,File数组类型 5 */ 6 public static void main(String[] args) { 7 8 // 需求:遍历d:\javatest目录 9 // list() 10 File file = new File("d:\\javatest"); 11 12 13 /* 14 String[] list = file.list(); 15 16 for (String str : list) { 17 System.out.print(str); 18 File f = new File(file.getPath()+"\\"+str); 19 if(f.isDirectory()) { 20 System.out.println(" 目录"); 21 }else { 22 System.out.println(" 文件"); 23 } 24 }*/ 25 26 // listFiles(); 27 File[] listFiles = file.listFiles(); 28 for (File f : listFiles) { 29 System.out.print(f.getName()); 30 if(f.isDirectory()) { 31 System.out.println(" 目录"); 32 }else { 33 System.out.println(" 文件"); 34 } 35 } 36 }
自己写了一个浏览文件内容的小程序,实现效果如下:
主要时采用了递归的方式,遍历过程中如果发现是文件夹,则调用自己。其实最难的地方是这个输出的形式的实现,源码如下:
1 import java.io.File; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 public class Test { 6 public static void main(String[] args) { 7 File file = new File("C:\\Test"); 8 fileInfo(file); 9 10 } 11 12 private static void fileInfo(File file) { 13 System.out.println(file.getName()); 14 List<Integer> cursor = new ArrayList<Integer>(); 15 fileInfo(file, cursor); 16 } 17 18 private static void fileInfo(File file, List<Integer> cursor) { 19 File[] files = file.listFiles(); 20 List<Integer> tmp = new ArrayList<Integer>(cursor); 21 for (int i = 0; i < files.length; i++) { 22 for(int num : cursor) { 23 if(num == 0) 24 System.out.print(" "); 25 else { 26 System.out.print("┃ "); 27 } 28 } 29 if(files[i].isDirectory()) { 30 if(i == files.length - 1) { 31 System.out.println("┖ " + files[i].getName()); 32 tmp.add(0); 33 } 34 else { 35 System.out.println("┠ "+files[i].getName()); 36 tmp.add(1); 37 } 38 fileInfo(files[i], tmp); 39 tmp.remove(tmp.size() - 1); 40 }else { 41 if(i == files.length - 1) 42 System.out.println("┖ " + files[i].getName()); 43 else 44 System.out.println("┠ "+files[i].getName()); 45 } 46 } 47 48 } 49 }