Java-File类、IO总结

File类

  • 概念:代表物理盘符中的一个文件或者文件夹。
  • 方法:
    • createNewFile()//创建一个新文件
    • mkdir()//创建一个新目录
    • delete()//删除文件或空目录
    • exists()//判断File对象所对象所代表的对象是否存在
    • getAbsolutePath()//获取文件的绝对路径
    • getName ()//取得名字
    • getParent()//获取文件/目录所在的目录
    • isDirectory()//是否是目录
    • isFile()//是否是文件
    • length()//获得文件的长度
    • listFiles()//列出目录中的所有内容
    • renameTo()//修改文件名为

分隔符与文件操作

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * File类的使用
 * (1)分隔符
 * (2)文件操作
 * (3)文件夹操作
 */
public class Demo01 {
    public static void main(String[] args) throws Exception{
        //separator();
        fileOpe();
    }
    //分隔符
    public static void separator(){
        System.out.println("路径分隔符:"+ File.pathSeparator);
        System.out.println("名称分隔符:"+File.separator);
    }
    //文件操作
    public static void fileOpe() throws IOException, InterruptedException {
        //创建文件
        File file = new File("d:\\file.txt");
        if (!file.exists()) {//存在该文件返回true,否则返回false。
            boolean newFile = file.createNewFile();
            System.out.println("创建文件结果为:" + newFile);
        }
        //删除文件
        //直接删除
//        System.out.println("删除结果为:"+file.delete());
        //使用jvm退出时删除
//        file.deleteOnExit();
//        Thread.sleep(5000);

        //获取文件信息
        System.out.println("获取绝对路径"+file.getAbsolutePath());
        System.out.println("获取路径"+file.getPath());
        System.out.println("获取名称"+file.getName());
        System.out.println("获取父目录"+file.getParent());
        System.out.println("获取文件长度"+file.length());
        System.out.println("获取文件创建时间"+new Date(file.lastModified()).toLocaleString());

        //判断
        System.out.println("判断是否可写:"+file.canWrite());
        System.out.println("判断是否是文件:"+file.isFile());
        System.out.println("判断是否隐藏:"+file.isHidden());
    }

}

文件夹操作

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * File类的使用
 * (1)分隔符
 * (2)文件操作
 * (3)文件夹操作
 */
public class Demo01 {
    public static void main(String[] args) throws Exception{
        //separator();
        //fileOpe();
        directoryOpe();
    }
    //分隔符
    public static void separator(){
        System.out.println("路径分隔符:"+ File.pathSeparator);
        System.out.println("名称分隔符:"+File.separator);
    }
    //文件操作
    public static void fileOpe() throws IOException, InterruptedException {
        //创建文件
        File file = new File("d:\\file.txt");
        if (!file.exists()) {//存在该文件返回true,否则返回false。
            boolean newFile = file.createNewFile();
            System.out.println("创建文件结果为:" + newFile);
        }
        //删除文件
        //直接删除
//        System.out.println("删除结果为:"+file.delete());
        //使用jvm退出时删除
//        file.deleteOnExit();
//        Thread.sleep(5000);

        //获取文件信息
        System.out.println("获取绝对路径"+file.getAbsolutePath());
        System.out.println("获取路径"+file.getPath());
        System.out.println("获取名称"+file.getName());
        System.out.println("获取父目录"+file.getParent());
        System.out.println("获取文件长度"+file.length());
        System.out.println("获取文件创建时间"+new Date(file.lastModified()).toLocaleString());

        //判断
        System.out.println("判断是否可写:"+file.canWrite());
        System.out.println("判断是否是文件:"+file.isFile());
        System.out.println("判断是否隐藏:"+file.isHidden());
    }
    public static void directoryOpe() throws InterruptedException {
        //创建文件夹
        File dir = new File("d:\\aaa\\bbb\\ccc");
        System.out.println(dir.toString());
        if (!dir.exists()){
            //System.out.println("创建结果:"+dir.mkdir());//只能创建单级文件夹
            System.out.println("创建结果:"+dir.mkdirs());//可以创建多级文件夹
        }

        //删除文件夹
        //直接删除
//        System.out.println("删除结果:"+dir.delete());//只能删除最低级目录,且必须是空目录。
        //使用JVM删除
//        dir.deleteOnExit();
//        Thread.sleep(5000);

        //获取文件夹信息
        System.out.println("获取文件夹绝对路径"+dir.getAbsolutePath());
        System.out.println("获取文件夹路径"+dir.getPath());
        System.out.println("获取文件夹名称"+ dir.getName());
        System.out.println("获取文件夹父目录"+ dir.getParent());
        System.out.println("获取文件夹创建时间"+new Date(dir.lastModified()).toLocaleString());

        //判断
        System.out.println("判断是否为文件夹"+dir.isDirectory());
        System.out.println("判断是否隐藏"+dir.isHidden());

        //遍历文件夹
        File dir2 = new File("D:\\D\\w3school\\html");
        for (String s : dir2.list()) {
            System.out.println(s);
        }

    }

}

递归遍历删除文件夹案例

import java.io.File;

/**
 * 案例1:递归遍历文件夹
 * 案例2:递归删除文件夹
 */
public class ListDemo {
    public static void main(String[] args) {
//        listDir(new File("d:\\aaa"));
        deleteDir(new File("d:\\aaa"));
    }
    //递归遍历文件夹
    public static void listDir(File dir){
        File[] files = dir.listFiles();
        if (files!=null&&files.length>0){
            for (File file : files) {
                if (file.isDirectory()){
                    listDir(file);//递归调用
                }else {
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }

    //递归删除文件夹
    public static void deleteDir(File dir){
        File[] files = dir.listFiles();
        if(files!=null&&files.length>0){
            for (File file : files) {
                if(file.isDirectory())
                    deleteDir(file);
                else System.out.println("删除:"+file.getAbsolutePath()+file.delete());
            }
        }
        System.out.println("删除:"+dir.getAbsolutePath()+dir.delete());
    }
}

补充: Properties

  •  Properties:属性集合
  • 特点
    • 1 存储属性名和属性值
    • 2 属性名和属性值都是字符串类型
    • 3 没有泛型
    • 4 和流有关
import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;

/**
 * 演示Properties集合的使用
 */
public class Demo02 {
    public static void main(String[] args) throws Exception {
        //创建集合
        Properties properties = new Properties();
        //添加元素
        properties.setProperty("name","张三");
        properties.setProperty("age","18");
        System.out.println(properties.toString());
        //删除元素
//        properties.remove("name");
//        properties.clear();
//        System.out.println(properties.toString());

        //遍历
        //keySet
        System.out.println("————————————————keySet————————————————————————");
        for (Object o : properties.keySet()) {
            System.out.println(o.toString()+"=="+properties.getProperty((String) o));
        }
        //entrySet
        System.out.println("————————————————entrySet————————————————————————");
        for (Map.Entry<Object, Object> entry : properties.entrySet()) {
            System.out.println(entry.getKey()+"=="+entry.getValue());
        }
        //stringPropertyNames
        System.out.println("————————————————stringPropertyNames————————————————————————");
        for (String name : properties.stringPropertyNames()) {
            System.out.println(name+"=="+properties.getProperty(name));
        }

        //和流有关的方法
        //list
//        PrintWriter printWriter = new PrintWriter("d:\\print.txt");
//        properties.list(printWriter);
//        printWriter.close();

        //store
//        FileOutputStream fos = new FileOutputStream("d:\\store.properties");
//        properties.store(fos,"tips");
//        fos.close();

        //load
        Properties properties1 = new Properties();
        FileInputStream fis = new FileInputStream("d:\\store.properties");
        properties1.load(fis);
        System.out.println(properties1.toString());

    }
}

总结

流:内存与存储设备之间传输数据的通道。

流的分类:

        方向:输入流、输出流;

        类型:字节流、字符流;

        其他:节点流、缓冲流。

序列化:把内存中的数据写入到磁盘中。

反序列化:把磁盘中的数据读取到内存中。

类必须实现Serializable接口。

File对象

代表物理盘符中的一个文件或者文件夹。

Guess you like

Origin blog.csdn.net/Mr_yao0/article/details/121346282