java.io.File

package com.File;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileDemo1 {
    public static void main(String[] args) {
    
    }
    /*
     * 我们想要实现IO操作,就必须知道硬盘上文件的表现形式
     * 而java就提供了一个File类供我们使用
     * 
     * File:文件和目录路径名的抽象表示形式
     * 构造方法:
     *     File(String pathname)
     *     File(String parent,String child)
     *     File(File parent,String child)
     */
    public void test01(){
        //把d:\demo\a.txt封装成一个File对象
        File file=new File("E:\demo\a.txt");
        
        File file2=new File("E:\demo","a.txt");
        
        File file3=new File("E:\demo");
        File file4=new File(file3,"a.txt");
    }
    
    /*
     *public boolean createNewFile() :当且仅当不存在创建
     *public boolean mkdir() 当且仅当不存在创建文件夹 
     *public boolean mkdirs() 创建文件夹,如果父文件夹不存在会自动创建出来
     *
     * 骑白马的不一定是王子,可能是班长
     * 注意:你到底是要创建文件还是文件夹,你最清楚,方法不要调错
     */
    public void test02() throws IOException{
        //我要早e盘目录下创建一个文件夹demo
        File file=new File("e:\demo");
        System.out.println("mkdir:"+file.mkdir());
        
        //我要在e盘目录demo下创建一个文件a.txt
        File file2=new File("e:\demo\a.txt");
        System.out.println("createNewFile:"+file2.createNewFile());
        
        //我要在e盘目录test下创建一个文件b.txt
        //Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
        //注意:想要在某个目录下创建内容,该目录必须首先存在
//        File file3=new File("e:\test\b.txt");
//        System.out.println("createNewFile:"+file3.createNewFile());
        
        //我要在e盘目录test下创建一个文件aaa目录
//        File file4=new File("e:\test\aaa");
//        System.out.println("mkdir:"+file4.mkdir());
        
//        File file5=new File("e:\test");
//        File file6=new File("e:\test\aaa");
//        System.out.println("mkdir:"+file5.mkdir());
//        System.out.println("mkdir:"+file6.mkdir());
        
        File file7=new File("e:\aaa\bbb\ccc\ddd");
        System.out.println("mkdirs:"+file7.mkdirs());
        
        File file8=new File("e:\test\ddd\x.txt");
        System.out.println("mkdirs:"+file8.mkdirs());
    }
    /*
     * 删除功能:public boolean delete()
     * 
     * 注意:
     *         A:如果你创建文件或者文件夹忘了写盘符;路径,那么默认在项目路径下
     *        B:java中的删除不走回收站
     *        C:如果要删除一个文件夹,请注意该文件夹内不能包含文件夹或者文本
     */        
    public void test03() throws IOException{
//        File file=new File("e:\a.txt");
//        System.out.println("createNewFile:"+file.createNewFile());
        
        //我不小心写成这个样子
        File file=new File("a.txt");
        System.out.println("createNewFile:"+file.createNewFile());
        
        File file2=new File("aaa\bbb\ccc");
        System.out.println("mkdirs:"+file2.mkdirs());
        
        File file3=new File("a.txt");
        System.out.println("delete:"+file3.delete());
        
        File file4=new File("aaa\bbb\ccc");
        System.out.println("delete:"+file4.delete());
        
//        File file5=new File("aaa");
//        System.out.println("delete:"+file5.delete());//要删除一个文件夹必须先删除它的子元素
        
        File file6=new File("aaa\bbb");
        File file7=new File("aaa");
        System.out.println("delete:"+file6.delete());
        System.out.println("delete:"+file7.delete());
    }
    /*
     * 
     * 重命名功能:public boolean renameTo(File dest)
     *         如果路径名相同,就是改名字
     *         如果路径名不同,就是改名并且剪切
     * 
     * 路径以盘符开始: 绝对路径: c:\a.txt
     * 路径不易盘符开始: 相对路径  a.txt
     */
    public void test04(){
//        File file=new File("林青霞.jpg");
//        if(!file.exists()){
//            file.createNewFile();
//        }
        //需求,我要修改这个文件的名称为东方不败.jpg
        
//        File newFile=new File("东方不败.jpg");
//        System.out.println("renameTo:"+file.renameTo(newFile));
        File file2=new File("东方不败.jpg");
        File newFile2=new File("e:\林青霞.jpg");
        System.out.println("renameTo:"+file2.renameTo(newFile2));
    }
    /*
     * 判断功能:
     *     public boolean isDirectory()
     *     public boolean isFile()
     *     public boolean exists()
     *     public boolean canRead()
     *     public boolean canWrite()
     *     public boolean isHidden()
     * 
     */
    public void test05(){
        File file=new File("a.txt");
        
        System.out.println("isDirectory:"+file.isDirectory());
        System.out.println("isFile:"+file.isFile());
        System.out.println("exists:"+file.exists());
        System.out.println("canRead:"+file.canRead());
        System.out.println("canWrite:"+file.canWrite());
        System.out.println("isHidden:"+file.isHidden());
    }
    /*
     * 获取功能:
     * public String getAbsolutePath() 获取绝对路径
     * public String getPath() 获取相对路径
     * public String getName() 获取名称
     * public long length() 获取长度,字节数
     * public long lastModified() 获取最后一次修改的时间,毫秒值
     * 
     */
    public void test06(){
//        File file=new File("demo");
//        file.mkdirs();
//        File file1=new File("demo\text.txt");
//        file1.createNewFile();
        
        File file=new File("demo\text.txt");
        System.out.println("getAbsolutePath:"+file.getAbsolutePath());
        System.out.println("getPath:"+file.getPath());
        System.out.println("getName:"+file.getName());
        System.out.println("length:"+file.length());
        System.out.println("lastModified:"+file.lastModified());
        
        //
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(new Date(file.lastModified())));
    }
    /*
     * 获取功能:
     *     public String[] list():获取指定目录下所有文件或者文件夹的名称数组
     *     public File[] listFiles() 获取指定目录下所有文件或者目录的File数组
     */
    public void test07(){
        File file=new File("e:\");
        
        String[] strArray=file.list();
        for(String s:strArray){
            System.out.println(s);
        }
        System.out.println("----------------");
        File[] fileArray=file.listFiles();
        for(File f:fileArray){
            System.out.println(f.getName());
        }
    }
    /*
     * 使用文件名称过滤器,类似于treeSet中使用的比较器
     * 
     * 判断在E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
     * 
     * 思路:
     *     先获取所有的,再判断满足条件就输出
     *     获取的时候就已经满足条件了,然后就输出即可
     * 
     * 要想实现这个效果,就必须学习一个接口:FilenameFilter 文件名称过滤器
     * public String[] list(FilenameFilter filter)
     * public File[] listFiles(FilenameFilter filter)
     */
    public void test08(){
        File file=new File("e:\");
        
        //获取该目录下所有文件或者文件夹的String数组
        String[] strArray=file.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
//                System.out.println(dir+"--------"+name);
//                File file=new File(dir,name);
//                System.out.println(file);
//                boolean flag=file.isFile();
//                boolean flag2=name.endsWith(".jpg");
//                return flag && flag2;
                return new File(dir,name).isFile() && name.endsWith(".jpg");
            }
        });
        for(String s:strArray){
            System.out.println(s);
        }
    }
    //小测试
    /*
     * 判断在E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
     * 
     */
    public void test09(){
        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());
                }
            }
        }
    }
    
}
原文地址:https://www.cnblogs.com/aigeileshei/p/5572431.html