java程序员从笨鸟到菜鸟之(三十四)File

来源:互联网 发布:怎么删除多重网络 编辑:程序博客网 时间:2024/06/01 10:46

IO流之前要先懂得如何封装硬盘上的以文件或者目录,使用File类;File类是用来描述文件或者目录(文件夹)的路径的抽象表现形式

本节我们就开始讨论File类

常用的构造方法
public File(String pathname):给定路径名以字符串来表示当前这个文件或者文件夹(开发中推荐使用第一种构造方法)
   public File(String parent,String child):根据 parent路径名字符串和 child路径名字符串创建一个新 File对象 
   public File(File parent, String child):根据 parent抽象路径名和 child 路径名字符串创建一个新 File实例
  需求:要表示当前计算机e盘下一个demo文件夹中的一个a.txt文件

实例1

package org.westos_01;import java.io.File;public class FileDemo {public static void main(String[] args) {//创建一个File实例---文件//方式1File file = new File("E:\\demo\\a.txt") ;System.out.println(file);//方式2File file2 = new File("E:\\demo", "a.txt") ;System.out.println(file2);//方式3File file3 = new File("E:\\demo") ;File file4 = new File(file3, "a.txt") ;System.out.println(file4);}}
 使用File对象可以创建文件或者文件夹
   创建有关的成员方法
  public boolean mkdir()创建此抽象路径名指定的目录(文件夹)。
   注意:如果当前某个盘符下已经有了这个目录(文件夹),不会再创建了;如果找不到文件的路径就会报错
  public boolean createNewFile():创建文件的,如果已经有这个文件了,不再创建。
   注意:该方法本身就会编译时期异常IOException
   public boolean mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
    注意:可以在不存在的目录中创建文件夹---也就是如果找不到当前路径,就会自己创建      
    注意事项:
         (1)自己要清楚要创建的是文件夹还是文件,每个方法都不一样!
         (2)没有带盘符,默认到当前项目下创建文件或者文件夹

实例2

package org.westos_02;import java.io.File;import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {//需要在E盘下创建一个新的文件夹:demo//描述一下这个文件的抽象路径形式//用File对象来封装当前这个文件夹File file = new File("e:\\demo") ;//创建文件夹System.out.println("mkdir:"+file.mkdir());//public boolean createNewFile():创建文件:在E盘下的demo文件夹中创建a.xt文件File file2 = new File("E:\\demo\\a.txt") ;System.out.println("createNewFile:"+file2.createNewFile());//需求:在E盘下的test文件夹下创建一个b.txt文件//File file3 = new File("e:\\test\\b.txt") ;//创建文件之前,确保当前盘符下有这个文件夹,否则,IOEXception:系统找不到指定路径//System.out.println("createNewFile:"+file3.createNewFile());//public boolean mkdirs()    //需求:在e盘下创建aaa文件夹,在创建子目录bbb--->ccc--ddd//创建File对象来封装File file4 = new File("E:\\aaa\\bbb\\ccc\\ddd") ;//public boolean mkdirs()System.out.println("mkdirs:"+file4.mkdirs());////没有带盘符,默认到当前项目下创建了文件File file5 = new File("a.txt") ; System.out.println("createNewFile:"+file5.createNewFile());}}
  如果不小心创建文件或者文件夹的时候,没有写盘符那么就会当前项目下进行创建
   public boolean delete()删除此抽象路径名表示的文件或目录
   注意事项:
   删除的方法不能删除带有目录或者文件的文件夹
   删除多个目录,必须逐一删除!

实例3

package org.westos_03;import java.io.File;public class FileDemo {public static void main(String[] args) {//在当前项目下创建aaa\\bbb\\cccFile file = new File("aaa\\bbb\\ccc") ;System.out.println("mkdirs:"+file.mkdirs());//需求:要删除当前项目下的a.txt文件File file2 = new File("a.txt") ;//当前路径有此文件System.out.println("delete:"+file2.delete());//需求:删除aaa\\bbb\\cccFile file3 = new File("aaa\\bbb\\ccc") ;System.out.println("delte:"+file3.delete());File file4 = new File("aaa\\bbb") ;System.out.println(file4.delete());File file5 = new File("aaa") ;System.out.println(file5.delete());}}
File类中的重命名功能
   public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。 
  1)使用这个功能:当两个抽象路径一致,那么只是重命名
  2)当这两个抽象路径不一致,剪切并且改名了

实例4

package org.westos_03;import java.io.File;public class FileDemo2 {public static void main(String[] args) {//现在要描述当前项目下有一个a1.jpg File file = new File("a1.jpg") ;//当前路径应该有该图片//使用重命名功能:文件名称该成:a2.jpgFile file2 = new File("a2.jpg") ;//调用功能file.renameTo(file2) ;//需求:将当前项目下的a1.jpg--->复制到e:\\a1.jpgFile file3 = new File("a2.jpg") ;//E:\\a2.jpgFile file4 = new File("E:\\a1.jpg") ;file3.renameTo(file4) ;}}
 File类中的判断功能
  public boolean isDirectory():判断是否是文件夹经常用到
  public boolean isFile():判断是否是一个标准文件经常用到
  public boolean canRead():判断是否可读
  public boolean canWriter():判断是否可写
  public boolean isHidden():判断是否是隐藏文件
  public boolean isAbsolute():判断次路径名是否是绝对路径
实例5
package org.westos_04;import java.io.File;import java.io.IOException;public class FileDemo {public static void main(String[] args) throws IOException {//在当前项目下创建一个文件File file = new File("a.txt") ;//System.out.println(file.createNewFile());System.out.println(file.isDirectory());System.out.println(file.isFile());System.out.println(file.canRead());System.out.println(file.canWrite());System.out.println(file.isHidden());System.out.println(file.isAbsolute());}}
  File类中的获取功能
   public File getAbsolutePath():获取当前文件或者文件夹绝对路径
   public String getPath():获取相对路径
   public long length()返回由此抽象路径名表示的文件的长度
   public long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间
   public String getName():获取名称
 实例6

package org.westos_04;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;public class FileDemo2 {public static void main(String[] args) {File file = new File("a.txt") ;//绝对路径System.out.println(file.getAbsolutePath());//E:\javacode\workspace\day17_File\a.txt//相对路径System.out.println(file.getPath());//a.txtSystem.out.println(file.getName());System.out.println(file.length());//描述文件内容 长度System.out.println(file.lastModified());//1511075302018long:时间毫秒值//long---->Date---->String"日期文本格式"//创建日期对象Date d = new Date(1511075302018L) ;//创建一个SimpleDateFormat对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;//格式化String dateStr = sdf.format(d) ;System.out.println(dateStr);//2017-11-19 15:08:22}}
  File类的高级获取功能
   public String[] list():返回对象是一个字符串数组,当前哪个一盘符下的所有的文件以及文件夹的字符串名称数组
   public File[] listFiles():返回对象是一个File数组,当前哪个盘下的所有的文件以及文件夹的File数组
 实例7

package org.westos_05;import java.io.File;public class FileDemo {public static void main(String[] args) {//需求:获取e盘下所有的文件夹以及文件的字符串名称数组//用File对象封装下e盘File file = new File("E:\\") ;////public String[] list()String[] strArray = file.list() ;//遍历:遍历之前,一定要做非空判断if(strArray!=null){//增强for遍历for(String s:strArray){System.out.println(s);}}System.out.println("------------------------------------------");//public File[] listFiles():File[] fileArray = file.listFiles() ;if(fileArray !=null){for(File f :fileArray){System.out.println(f.getName());}}}}
 练习1

package org.westos_05;import java.io.File;/** * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 *  * 分析: * 1:用File对象封装E盘 * 2:获取当前e盘下的所有的文件以及文件夹的名称数组或者File数组 * 3):针对对象要做非空判断 * 4)遍历:File数组增强for遍历 * 获取每一个File对象 * 判断这个File对象是否是文件:isFile() * 如果是文件,还要判断是否以.jpg结尾 * 是,就输出 * 不是,不管 * @author Apple */public class FileTest {public static void main(String[] args) {//1)封装E盘File srcFile = new File("e:\\") ;//2)获取当前e盘下的所有的文件以及文件夹的File数组File[] fileArray = srcFile.listFiles() ;//3)给当前对象判断if(fileArray !=null){//增强for遍历这个File数组for(File file :fileArray){//获取到每一个file对象if(file.isFile()){//是文件//要需要判断是否以.jpg结尾的文件if(file.getName().endsWith(".jpg")){System.out.println(file.getName());}}}}}}
练习2

package org.westos_05;import java.io.File;import java.io.FilenameFilter;/** * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 *  * 方式1:封装,然后获取所有的文件以及文件夹的File数组,遍历,判断...输出 * 方式2:在获取的时候就已经满足条件 *  * 引出:文件名称过滤器-------Javaweb中将过滤器以及上传和下载. * public String[] list(FilenameFilter filter) * public File[] listFiles(FileFilter filter) *  * 参数是一个接口,(开发中使用的接口的匿名内部类的方式) * 实现一个方法: * boolean accept(File dir, String name):这个方法的返回值是true(就是表示要将当前文件夹或者文件的名称添加数组中),false(表示不添加数组中) * @author Apple */public class FileTest2 {public static void main(String[] args) {//1)封装e盘File file = new File("e:\\") ;//2)public String[] list(FilenameFilter filter)String[] strArray = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {//return false;//该逻辑是需要根据需求来判断的//该方法中的返回值是需要我们自己判断的,根据需求做逻辑判断/*File file = new File(dir, name) ;//判断File是否是文件boolean flag1 = file.isFile() ;//如果是文件,还要判断是否以".jpg"结尾boolean flag2 = name.endsWith(".jpg") ;return flag1 && flag2 ;*/return new File(dir,name).isFile() && name.endsWith(".jpg") ;}});//遍历字符串数组for(String s : strArray){System.out.println(s);}}}




阅读全文
0 0
原创粉丝点击