IO流技术

路径拼接:

package com.sxt.io;

import java.io.File;

/**
 * 
 * @author 裴新
 *
 */
public class PathDemo01 {
    /**
     *    /  名称分隔符  separator
     * @param args
     */
    public static void main(String[] args) {
        String path ="D:\java300\IO_study01\IO.png";
        System.out.println(File.separatorChar);        
        //建议
        //1、/
        path = "D:/java300/IO_study01/IO.png";
        System.out.println(path);
        //2、常量拼接
        path ="D:"+File.separator+"java300"+File.separator+"IO_study01"+File.separator+"IO.png";
        System.out.println(path);
    }

}
View Code

构建File对象:

public class FileDemo01 {
    /**
     * 构建File对象
     * @param args
     */
    public static void main(String[] args) {
        String path ="D:/java300/IO_study01/IO.png";
        
        //1、构建File对象
        File src = new File(path);
        System.out.println(src.length());
        
        //2、构建File对象
        src = new File("D:/java300/IO_study01","IO.png");
        src = new File("D:/java300/","IO_study01/IO.png");
        System.out.println(src.length());
        
        //3、构建File对象
        src = new File(new File("D:/java300/IO_study01"),"IO.png");
        System.out.println(src.length());
    }

}
View Code

构建File对象:相对路径与绝对路径

public class FileDemo02 {
    /**
     * 构建File对象
     * 相对路径与绝对路径
     * 1)、存在盘符: 绝对路径
     * 2)、不存在盘符:相对路径  ,当前目录 user.dir
     * @param args
     */
    public static void main(String[] args) {
        String path ="D:/java300/IO_study01/IO.png";
        
        //绝对路径
        File src = new File(path);
        System.out.println(src.getAbsolutePath());
        
        //相对路径
        System.out.println(System.getProperty("user.dir"));
        src = new File("IO.png");
        System.out.println(src.getAbsolutePath());
        
        
        //构建一个不存在的文件
        src = new File("aaa/IO2.png");
        System.out.println(src.getAbsolutePath());
    }

}
View Code

获取File对象名称,路径,绝对路径,父对象,父路径

/**
 * 名称或路径
 * getName()   : 名称
 * getPath()    : 相对、绝对
    getAbsolutePath() :绝对
    getParent(): 上路径 返回null

 * @author 裴新
 *
 */
public class FileDemo03 {

    public static void main(String[] args) {
        File src = new File("IO_study01/IO.png");
        
        //基本信息
        System.out.println("名称:"+src.getName());
        System.out.println("路径:"+src.getPath());
        System.out.println("绝对路径:"+src.getAbsolutePath());
        System.out.println("父路径:"+src.getParent());
        System.out.println("父对象:"+src.getParentFile().getName());
    }

}
View Code

判断文件是否存在,是文件还是文件夹

package com.sxt.io;

import java.io.File;

/**
 * 文件状态
 * 1、不存在: exists
 * 2、存在
 *      文件: isFile
 *      文件夹: isDirectory

 * @author 裴新
 *
 */
public class FileDemo04 {

    public static void main(String[] args) {
        File src = new File("IO_study01/IO.png");
        System.out.println(src.getAbsolutePath());
        System.out.println("是否存在:"+src.exists());
        System.out.println("是否文件:"+src.isFile());
        System.out.println("是否文件夹:"+src.isDirectory());
        
        src = new File("IO.png");
        System.out.println("----------");
        System.out.println("是否存在:"+src.exists());
        System.out.println("是否文件:"+src.isFile());
        System.out.println("是否文件夹:"+src.isDirectory());
        
        src = new File("D:\java300\IO_study01");
        System.out.println("----------");
        System.out.println("是否存在:"+src.exists());
        System.out.println("是否文件:"+src.isFile());
        System.out.println("是否文件夹:"+src.isDirectory());
        
        //文件状态
        src = new File("xxx");
        if(null == src || !src.exists()) {
            System.out.println("文件不存在");
        }else {
            if(src.isFile()) {
                System.out.println("文件操作");
            }else {
                System.out.println("文件夹操作");
            }
        }

        
    }

}
View Code

获取File对象文件的长度

package com.sxt.io;

import java.io.File;

/**
 * 其他信息
 * length() : 文件的字节数 
*
 * 
 * @author 裴新
 *
 */
public class FileDemo05 {
    public static void main(String[] args) {
        File src = new File("D:/java300/IO_study01/IO.png");
        System.out.println("长度:"+ src.length());
        
        src = new File("D:/java300/IO_study01");
        System.out.println("长度:"+ src.length());
        
        src = new File("D:/java300/IO_study02");
        System.out.println("长度:"+ src.length());
        
        
    }
}
View Code

创建文件和删除文件: createNewFile(), delete()

package com.sxt.io;

import java.io.File;
import java.io.IOException;

/**
 * 其他信息:
 * createNewFile()  : 不存在才创建,存在创建成功
 * delete():删除已经存在的文件
*
 * 
 * @author 裴新
 *
 */
public class FileDemo06 {
    public static void main(String[] args) throws IOException {
        File src = new File("D:/java300/IO_study01/io.txt");
        boolean flag =src.createNewFile();
        System.out.println(flag);
        flag = src.delete();
        System.out.println(flag);
        
        System.out.println("----------");
        //不是文件夹
        flag =src.createNewFile();
        System.out.println(flag);
        
        flag = src.delete();
        System.out.println(flag);
        
        
        //补充:  con com3... 操作系统的设备名,不能正确创建
        src = new File("D:/java300/IO_study01/con");
        src.createNewFile();
    }
}
View Code

创建文件夹:mkdir()和mkdirs()

package com.sxt.io;

import java.io.File;

/**
 * 创建目录
 * 1、mkdir() : 确保上级目录存在,不存在创建失败
 * 2、mkdirs(): 上级目录可以不存在,不存在一同来创建
 * @author 裴新
 *
 */
public class DirDemo01 {
    public static void main(String[] args) {
        File dir = new File("D:/java300/IO_study01/dir/test");
        //创建目录 mkdirs()
        boolean flag = dir.mkdirs();
        System.out.println(flag);
        //创建目录 mkdir()
        dir = new File("D:/java300/IO_study01/dir/test2");
        flag = dir.mkdirs();
        System.out.println(flag);
    }
}
View Code

列出下一级: 列出下级名称和下级File对象

package com.sxt.io;

import java.io.File;

/**
 * 列出下一级
 * 1、list() :列出下级名称
 * 2、listFiles():列出下级File对象
 * 
 * 列出所有的盘符: listRoots()
 * @author 裴新
 *
 */
public class DirDemo02 {
    public static void main(String[] args) {
        File dir = new File("D:/java300/IO_study01");
        
        //下级名称  list
        String[] subNames = dir.list();
        for(String s:subNames) {
            System.out.println(s);
        }
        
        //下级对象  listFiles()
        File[] subFiles = dir.listFiles();
        for(File s:subFiles) {
            System.out.println(s.getAbsolutePath());
        }
        
        //所有盘符
        File[] roots = dir.listRoots();
        for(File r:roots) {
            System.out.println(r.getAbsolutePath());
        }
    }
}
View Code

递归打印子孙级目录和文件的名称

package com.sxt.io;

import java.io.File;

/**
 *  递归: 方法自己调用自己 
 *  打印子孙级目录和文件的名称
 * @author 裴新
 *
 */
public class DirDemo04 {
    public static void main(String[] args) {
        File src =  new File("D:\java300\IO_study01");
        printName(src,0);
    }
    //打印打印子孙级目录和文件的名称
    public static void printName(File src,int deep) {
        //控制前面层次
        for(int i=0;i<deep;i++) {
            System.out.print("-");
        }
        //打印名称
        System.out.println(src.getName());    
        if(null ==src || !src.exists()) {  //递归头
            return ;
        }else if(src.isDirectory()) { //目录
            for(File s:src.listFiles()) {
                printName(s,deep+1); //递归体
            }
        }
    }
}
View Code

递归统计文件夹的大小

package com.sxt.io;

import java.io.File;

/**
 *  统计文件夹的大小
 * @author 裴新
 *
 */
public class DirDemo05 {
    public static void main(String[] args) {
        File src =  new File("D:\java300\IO_study01");
        count(src);
        System.out.println(len);
    }
    private static long len =0;
    public static void count(File src) {    
        //获取大小
        if(null!=src && src.exists()) {
            if(src.isFile()) {  //大小
                len+=src.length();
            }else { //子孙级
                for(File s:src.listFiles()) {
                        count(s);
                }
            }
        }
    }
}
View Code

 递归使用面向对象: 统计文件夹的大小

package com.sxt.io;

import java.io.File;

/**
 *  使用面向对象: 统计文件夹的大小
 * @author 裴新
 *
 */
public class DirCount {
    //大小
    private long len;
    //文件夹路径
    private String path;
    //文件的个数
    private int fileSize;
    //文件夹的个数
    private int dirSize;
    //
    private File src;
    
    public DirCount(String path) {
        this.path = path;
        this.src = new File(path);
        count(this.src);
    }    
    
    //统计大小
    private  void count(File src) {    
        //获取大小
        if(null!=src && src.exists()) {
            if(src.isFile()) {  //大小
                len+=src.length();
                this.fileSize++;
            }else { //子孙级
                this.dirSize++;
                for(File s:src.listFiles()) {
                        count(s);
                }
            }
        }
    }    
    
    public long getLen() {
        return len;
    }

    public int getFileSize() {
        return fileSize;
    }

    public int getDirSize() {
        return dirSize;
    }
    
    public static void main(String[] args) {
        DirCount dir = new DirCount("D:\java300\IO_study01");        
        System.out.println(dir.getLen()+"-->"+dir.getFileSize()+"-->"+dir.getDirSize());
        
        DirCount dir2 = new DirCount("D:/java300/IO_study01/src");        
        System.out.println(dir2.getLen()+"-->"+dir2.getFileSize()+"-->"+dir2.getDirSize());

    }    


    
    
    
}
View Code
原文地址:https://www.cnblogs.com/jiefangzhe/p/11298562.html