首页 > 编程语言 >JAVA之File操作

JAVA之File操作

时间:2024-07-15 18:29:44浏览次数:13  
标签:JAVA File System file println 操作 public out

目录

File 教程

一、file 基本操作

  1. 创建File 类对象

     /**
     * 创建File 类对象
     * 路径分为:
     * 1.绝对路径:是一个完整的路径 /home/alex/IdeaProjects/learn-java/base/base/src/main/resources/data/file.txt
     * 2.相对路径:是一个简化的路径,相对指的是相对于当前项目的根目录(base/src/main/resources/data/file.txt),一般使用相对路径
     * 可以用.表示当前目录,..表示上级目录。
     * File类中获取路径的方法:
     * 1. public String getPath() :将此File转换为路径名字符串。
     * 2. public String getAbsolutePath() :返回此File的绝对路径名字符串。
     * 3. public String getParent() :返回此File的父路径名字符串。
     * 4. public File getParentFile(): 返回此File的父路径对象
     * 4. public String getName():返回由此File表示的文件或目录的名称。
     */
    public static void createFileObject() throws IOException {
        // File类传入的路径 ,既可以是相对路径,也可以是绝对路径,绝对路径是以根目录开始的完整路径 demo: 'D:\\test\\test.txt'
        // 相对路径是以当前项目的根目录开始的路径,demo: 'test\\test.txt',这里使用的是相对路径
        // 注意分隔符,windows下使用的是反斜杠,linux下使用的是正斜杠
        // 这个就是绝对路径
        // File file = new File("/home/alex/IdeaProjects/learn-java/base/base/src/main/resources/data/file.txt");
        //  这个就是相对路径
        File file = new File("./base/src/main/resources/data/file.txt");
        System.out.println("file.getName() = " + file.getName());
        System.out.println("file = " + file);
        // 因为Windows和Linux的路径分隔符不同,File对象有一个静态变量用于表示当前平台的系统分隔符: File.separatorChar这个变量表示分隔符
        System.out.println("File 分隔符为: " + File.separator);

        //获取父路径路径
        String parent = file.getParent();
        System.out.println("获取父目录路径为:" + parent);

        File parentFile = file.getParentFile();
        System.out.println("获取父路径文件对象:" + parentFile);

        File dir = new File(".");
        System.out.println("当前目录为: " + dir);
        File dir2 = new File("..");
        System.out.println("上一级目录为:" + dir2);

        System.out.println("抽象路径名转换为路径名字符串(默认调用) = " + dir.getPath());
        System.out.println("抽象路径名的绝对路径名字符串 = " + dir.getAbsolutePath());
        System.out.println("抽象路径名的规范路径名字符串: " + dir.getCanonicalPath());



    }

2. File类中判断功能的方法

    /**
     * File类判断功能的方法
     * 1. public boolean exists() :此File表示的文件或目录是否实际存在。
     * 2. public boolean isDirectory() :此File表示的是否为目录。
     * 3. public boolean isFile() :此File表示的是否为文件。
     * 注意:
     * 电脑的硬盘中只有文件/文件夹,两个方法是互斥的
     * 两个方法使用前提,路径必须是存在的,否则都返回false
     */
    public static void isJudgement() {

        File file = new File("./base/src/main/resources/data/file.txt");
        System.out.println("file.exists() = " + file.exists());
        System.out.println("file.isFile() = " + file.isFile());
        System.out.println("file.isDirectory() = " + file.isDirectory());

    }

3. file类的创建功能的方法

   /**
     * file类的创建功能的方法
     * 1. public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
     * 2. public boolean mkdir() :创建由此File表示的目录。
     * 3. public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
     */
    public static void create() throws IOException {

        File file = new File("./base/src/main/resources/data/file.txt");
        boolean newFile = file.createNewFile(); // 创建永久文件
        System.out.println("是否创建成功: " + newFile);

        File dir = new File("tmp");
        boolean mkdir = dir.mkdir();// 创建一个文件夹
        System.out.println("文件夹创建:" + mkdir);

        File moreDir = new File("tmp/moreDir");
        boolean mkdirs = moreDir.mkdirs();// 创建多级永久文件夹
        System.out.println("多级文件夹创建: " + mkdirs);
        File temp = File.createTempFile("temp", ".txt", new File("tmp")); // 创建临时文件
        System.out.println("临时文件创建:" + temp);

        // 删除操作
        file.delete(); // 删除文件
        temp.deleteOnExit(); // 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
        moreDir.delete(); // 只能删除一个文件夹

        dir.delete();  // delete 方法只能删除一个空文件夹,如果是多个空文件夹,需要一个一个删除,后面演示


    }

4. File类中的遍历功能

 /**
     * File类的遍历功能
     * 1. public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
     * 2. public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
     */
    public static void listFile() {

        File file = new File(".");
        String[] list = file.list();
        System.out.println("list = " + Arrays.toString(list));
        File[] files = file.listFiles(); // 不进行过滤
        System.out.println("files = " + Arrays.toString(files));

        // 使用过滤器,仅仅显示,md文件
        File[] files1 = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File file, String s) {

                return s.endsWith(".md");
            }
        });
        System.out.println("files1 = " + Arrays.toString(files1));

    }

5. file类中常用的方法

/**
     * file中常用的方法
     * 1. public boolean exists():文件是否存在
     * 2. public boolean delete() :删除此抽象路径名表示的文件或目录。
     * 3.public void deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
     * 4. renameTo(File dest) :把文件重命名为指定的文件路径
     * 5. public long length() :返回由此File表示的文件的长度。
     * 6. public long lastModified() :返回此抽象路径名表示的文件上次修改的时间。
     * 7. public boolean setLastModified(long time) :设置文件最后修改时间。
     *
     */
    public static void fileMethods() throws IOException {

        File oldFile = new File("./tmp.text");
        oldFile.createNewFile();
        File newFile = new File("./tmp2.text");
        boolean b = oldFile.renameTo(newFile);
        System.out.println("重命名是否成功: " + b);
        long length = oldFile.length();
        System.out.println("length = " + length);
        newFile.delete();


    }

6. file 中文件权限操作的方法

    /**
     * File 中文件权限操作的方法
     * @throws IOException
     */
    public static void filePermissions() throws IOException {
        File file = new File("./tmp.text");
        System.out.println("file.canExecute() = " + file.canExecute());
        System.out.println("file.canRead() = " + file.canRead());
        System.out.println("file.canWrite() = " + file.canWrite());
        //方式一:
        //设置可执行权限
        file.setExecutable(true,false);
        //设置可读权限
        file.setReadable(true,false);
        //设置可写权限
        file.setWritable(true,false);
        System.out.println("file.canExecute() = " + file.canExecute());
        System.out.println("file.canRead() = " + file.canRead());
        System.out.println("file.canWrite() = " + file.canWrite());

        // 方式二:
        Runtime runtime = Runtime.getRuntime();
        try {
            Process exec = runtime.exec("chmod 777 ./tmp.text");
            exec.waitFor();
            int exitValue = exec.exitValue();
            //执行shell命令,一般返回为0 就是正常执行,如果返回值非0,说明执行出错了
            if(exitValue!=0){
                throw new RuntimeException(String.format("运行异常,错误码为:%d",exitValue));
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }


    }

标签:JAVA,File,System,file,println,操作,public,out
From: https://www.cnblogs.com/alex-oos/p/18303733

相关文章

  • JavaAPI练习(1) (2024.7.15)
        Math类packageMathExercise20240715;//Math类所在的是java.lang包,属于核心包,无需导包publicclassMathExercise{publicstaticvoidmain(String[]args){//Math方法为静态的,不需要创建对象,直接类名调用即可//abs返回参数的绝对......
  • 数据库操作语言之DDL、DML、DCL、DQL
    文章目录数据定义语言DDL【DataDefinitionLanguage】创建数据库的语法:查看数据库的语法:删除数据库的语法:数据表【DDL】数据表操作的命令有:创建数据表语法:查看数据表语法:删除数据表语法:修改数据表的常用操作:给数据表添加一列:修改列类型:修改列名:删除一列:修改表名:数......
  • javaSE学习 day04
    目录1.数组1.1数组是什么1.2静态数组1.2.1数组的格式1.2.2数组的访问1.2.3获取数组的长度1.3动态数组1.3.1动态数组是什么1.3.2动态数组的格式 1.3.3默认值规则1.4数组的遍历1.4.1什么是数组的遍历1.4.2为什么要遍历1.4.3遍历的格式1.5综合案例1.5.1计算班级......
  • javaScript基础讲解
     Javascript1.基本语法入门<head>  <metacharset="UTF-8">  <title>Title</title>  /*Javascript严格区分大小写*/  <script>    varscore=62;    if(score>60&&score<70){      alert("67"......
  • JAVA编辑word替换指定内容,解决插入图片显示不全问题
    在开发过程中,我们可能会遇到需要生成word,或者通过模板word替换相应内容的需求。但在文档中插入图片时,如果段落格式设置不对,就会导致图片只显示一点点或者不显示。接下来就介绍一下java编辑word和插入图片需怎么处理。1.引入依赖首先我们在项目中引入ApachePOI,用于读取和操作wor......
  • java List集合转Map并遍历输出
    1.使用流转map并且遍历packagecom.demo.toMap;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;publicclassMianDemo{publicstaticvoidmain(String[]args){List<NodeList>list=......
  • 代码随想录算法训练营第22天 |二叉树part07:235. 二叉搜索树的最近公共祖先、701.二叉
    代码随想录算法训练营第22天|二叉树part07:235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点235.二叉搜索树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/description/代码随想录:htt......
  • 开发板测试手册——系统启动、文件传送操作步骤详解(1)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • C文件操作
    1.为什么使用文件我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然......