美文网首页
java基础系列09--IO 流(1)

java基础系列09--IO 流(1)

作者: addin_gao | 来源:发表于2019-01-14 09:44 被阅读6次

IO 流

File 类

File更应该叫做一个路径 此类位于java.io.File

/*
        * File(String pathname):根据一个路径得到File对象
        * File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
        * File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
        * */
        File file = new File("aa.txt"); // 根据路径File对象这个对象可能不存在
        System.out.println(file);  // aa.txt
        System.out.println(file.exists()); // 判断此文件是否存在,存在返回true
        boolean  creat = file.createNewFile();  // 创建文件,创建成功返回true,否则返回false
        
        File file2 = new File("bb","cc.txt");
//      System.out.println(file2.createNewFile()); // 只能创建一个文件
//      System.out.println(file2.mkdirs()); //创建文件夹,如果父文件夹不存在,会帮你创建出来
        System.out.println(file2.mkdir()); // 创建文件夹 如果存在这样的文件夹,就不创建了,不能创建多个文件夹
        
        
    }

File类的重命名和删除功能:

  • public boolean renameTo(File dest):把文件重命名为指定的文件路径
  • public boolean delete():删除文件或者文件夹

重命名注意事项:

​ 如果路径名相同,就是改名,如果路径名不同,就是改名并剪切。

File f = new File("aa.txt");
f.createNewFile();
File f1 = new File("bb/bb.txt");
f.renameTo(f1);  // 将aa.txt 剪切到bb文件夹并且改名bb.txt

删除注意事项:

​ Java中的删除不走回收站。要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

File f = new File("aa.txt");
f.delete();  // 删掉aa.txt
File f1 = new File("bb/aa.txt");
f1.delete();  // 删掉bb下的aa.txt

File类的判断功能:

/* public boolean isDirectory():判断是否是目录
* public boolean isFile():判断是否是文件
* public boolean exists():判断是否存在
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
*/
File f = new File("aa.txt");
f.setWritable(false);   // windos 中可以设置可写权限,但是不能设置可读权限,认为都可读
System.out.println(f.canWrite()); // false
f.setReadable(false);
System.out.println(f.canRead()); // true

File类的获取功能:

* public String getAbsolutePath():获取绝对路径
* public String getPath():获取路径
* public String getName():获取名称
* public long length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 

文件名称过滤器的概述及使用:

public static void main(String[] args) throws IOException{
       /* * public String[] list(FilenameFilter filter)
        * public File[] listFiles(FileFilter filter)
        */
        File dir = new File("E:\\");
//      文件名称过滤器 -- 找出e盘直接子文件下的所有的.jpg结尾的文件名
        String[] endJPGArray =dir.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                File f = new File(dir,name);
                return f.isFile() && f.getName().endsWith(".jpg");
            }
        });
        
        for (String name : endJPGArray) {
            System.out.println(name);
        }
}

File的递归练习

统计一个文件或则文件夹的大小

public class test3 {
    public static void main (String[] args){
        File f = getFile();
        System.out.println(getSize(f));
    }
    public static File getFile(){
        Scanner sc= new Scanner(System.in);
        System.out.println("输入文件夹目录");
        while(true){
            String dirStr = sc.nextLine();
            File f = new File(dirStr);
            if(!f.exists()){
                System.out.println("路径不存在");
            }else{
                return f;
            }
        }
    }
    public static long getSize(File f){
        long l =0;
        if(f.isFile()){
            l +=f.length();
            return l;
        }else{
            File[] fl = f.listFiles();
            for (File file : fl) {
                if (file.isFile()){
                    l +=file.length();
                }else{
                    l += getSize(file); // 递归统计
                }
            }
            return l;
        }
    }  
}

递归删除一个文件或者文件夹

java程序删除的内容不会进垃圾桶的

    public static void main (String[] args){
        File f = getFile();
        delete(f);
    }
    public static File getFile(){
        Scanner sc= new Scanner(System.in);
        System.out.println("输入文件夹目录");
        while(true){
            String dirStr = sc.nextLine();
            File f = new File(dirStr);
            if(!f.exists()){
                System.out.println("路径不存在");
            }else{
                return f;
            }
        }
    }
    public static void delete(File f){
        System.out.println("1111");
        if(f.isFile()){
            f.delete();
        }else{
            File[] fs = f.listFiles();
            for (File file : fs) {
                if(file.isFile()){
                    file.delete();
                }else{
                    delete(file);
                }
            }
            f.delete(); // 删除文件夹内的内容后还要把当前空的文件夹删除掉
        }
    } 

将一个文件或者文件夹拷贝到一个文件夹下面:

public class test3 {
    public static void main (String[] args) throws IOException{
        File src = getFile();
        File dest = getFile();
        if(dest.isFile()){
            System.out.println("拷贝到某个文件夹,而不是文件");
            return;
        }
        if(src.equals(dest)){
            System.out.println("目标文件夹是原文件夹的子文件夹");
            return;
        }
        copy(src,dest);
    }
    public static File getFile(){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入文件夹路径或者文件路径");
        while(true){
            String dir = sc.nextLine();
            File f = new File(dir);
            if(!f.exists()){
                System.out.println("路径不存在");
            }else{
                return f;
            }
        }
    }
    public static void copy(File src,File dest) throws IOException{
        File newfile = new File(dest,src.getName());
        if(src.isFile()){
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newfile));
            int len;
            while((len=bis.read())!=-1){
                bos.write(len);
            }
            bis.close();
            bos.close();
        }else{
            newfile.mkdir();
            File[] files = src.listFiles();
            for (File file : files) {
                copy(file,newfile);
            }
        }
    }
}

相关文章

  • java基础系列09--IO 流(1)

    IO 流 File 类 File更应该叫做一个路径 此类位于java.io.File File类的重命名和删除功...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

  • 2021-01-18 文章收藏

    1. Java基础 1.1 Java基础语法 Java 8 数据流问题[https://mp.weixin.qq....

  • Java基础系列-Stream

    原创文章,转载请标注出处:《Java基础系列-Stream》 一、概述 Stream操作简称流操作,这里的流与IO...

  • java IO入门笔记

    1.java IO流的概念,分类,类图 1.1. java IO 流的概念 java的io是实现输入和输出的基础,...

  • Java IO详解

    1 Java IO流的概念,分类 1.1 Java IO流的概念 java的IO是实现输入和输出的基础,可以方便的...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • JAVA基础系列(七) IO流

    IO流体系分字节流和字符流,里面又都分为输入输出流。下图展示了IO体系的框架图。粗体部分为本文涉及到的IO流。 本...

  • java并发线程的基础

    Java并发系列之java并发编程基础

网友评论

      本文标题:java基础系列09--IO 流(1)

      本文链接:https://www.haomeiwen.com/subject/gzxskqtx.html