黑马程序员 Java基础 IO

来源:互联网 发布:java打印 编辑:程序博客网 时间:2024/05/18 20:08
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一 File

概述

IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件

File:文件和目录(文件夹)路径名的抽象表示形式

 

构造函数

A:File file = new File("e:\\demo\\a.txt");

 

B:File file = new File("e:\\demo","a.txt");

File(String parent, String child):根据一个目录和一个子文件/目录得到File对象

 

C:File file = new File("e:\\demo");

      File file2 = new File(file,"a.txt");

File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

 

// e:\\demo\\a.txt封装成一个File对象

 

3 File类的功能(以后用多了就都熟了)

A:创建功能

 public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了

 public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了

 public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

 

File file = new File("e:\\demo");System.out.println("mkdir: " + file.mkdir()); File file2 = new File("e:\\demo\\a.txt");System.out.println("creatNewFile: " + file2.creatNewFile()); File file7 = new File("e:\\abc\\abc\\abc");System.out.println("mkdirs: " + file7.mkdirs()); File file8 = new File("e:\\liuyi\\a.txt");System.out.println("mkdirs: " + file8.mkdirs());

 

B:删除功能

public boolean delete()

File file3 = new File("e:\\buf.txt");System.out.println(file3.delete());File file4 = new File("e:\\abc\\abc");System.out.println(file4.delete());
 

Java中的删除不走回收站。

要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

 

C:重命名功能

public boolean renameTo(File dest)

File file = new File("e:\\林青霞.jpg");File newFile = new File("e:\\东方不败.jpg"); System.out.println("renameTo:" + file.renameTo(newFile));


 

D:判断功能(感觉这个最常用了,递归的时候会用)

 * public boolean isDirectory():判断是否是目录

 * public boolean isFile():判断是否是文件

 * public boolean exists():判断是否存在

 * public boolean canRead():判断是否可读

 * public boolean canWrite():判断是否可写

 * public boolean isHidden():判断是否隐藏

 

E:获取功能(也很常用)

 *  public String getAbsolutePath():获取绝对路径

 *  public String getPath():获取相对路径

 *  public String getName():获取名称

 *  public long length():获取长度。字节数

 *  public long lastModified():获取最后一次的修改时间,毫秒值


 

F:高级获取功能(很常用)

 * public String[] list():获取指定目录下的所有文件或者文件夹的名称数组

 * public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组


G:过滤器功能

如案例1的第二种方法所示

 

二 案例

A:输出指定目录下指定后缀名的文件名称

File file = new File("e:\\"); File[] files = file.listFiles(); for(File f: files){if(f.isFile()){if(f.getName().endsWith(".jpg")){System.out.println(f.getName());}}}

很简单的,还有另一种方法,用的是过滤器

 *  public String[] list(FilenameFilter filter)

 *  public File[] listFiles(FilenameFilter filter)

public static void main(String[] args) {File file = new File("e:\\"); String[] strArray = file.list(new FilenameFilter(){public boolean accept(File dir, String name){// 到底把这个文件或者文件夹的名称加不加到数组中,取决于这里的返回值是true还是falsereturn new File(dir, name).isFile() && name.endsWith(".jpg");}}); for(String s: strArray){System.out.println(s);}}
 

B:批量修改文件名称

// E:\评书\三国演义\三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi

// 改后:E:\评书\三国演义\001_桃园三结义.avi

public static void main(String[] args) {File srcFolder = new File("E:\\评书\\三国演义"); File[] fileArray = srcFolder.listFiles(); for (File file : fileArray) {String name = file.getName();int index = name.indexOf("_");String numberString = name.substring(index + 1, index + 4);int endIndex = name.lastIndexOf('_');String nameString = name.substring(endIndex); String newName = numberString.concat(nameString); File newFile = new File(srcFolder, newName);  file.renameTo(newFile);}}


 

C:递归删除带内容的目录(递归)

*  自己之前写的,细节处有点问题,所以还是用了老师的代码

 

public static void main(String[] args) {File file = new File("e:\\abc"); deleteFolder(file);} public static void deleteFolder(File file){File[] files = file.listFiles();if(files != null){for(File f: files){if(f.isFile()){System.out.println(f.getName() + " " + f.delete());}else{deleteFolder(f);}} System.out.println(file.getName() + " " + file.delete());}}


 

D:把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台(递归)

public static void main(String[] args) {File file = new File("E:\\java 2015\\2015年Java基础视频_深入浅出精华版(风清扬)\\day20\\code\\day20_DiGui\\src\\cn"); getAllJavaFilePaths(file);} public static void getAllJavaFilePaths(File srcFolder){File[] files = srcFolder.listFiles(); if(files != null){ for(File f: files){if(f.isDirectory()){getAllJavaFilePaths(f);}else{if(f.getName().endsWith("java")){System.out.println(f.getPath());}}}}}


 

案例CD都是只要掌握了递归的方式遍历文件,无论要求怎么变,都可以做了

 

 

0 0