我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java Io File文件操作基础教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java Io File文件操作基础教程

File 类概述

Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点:

  • 检测文件是否存在
  • 读取文件长度
  • 重命名或移动文件
  • 删除文件
  • 检测某个路径是文件还是目录
  • 读取目录中的文件列表

请注意: File只能访问文件以及文件系统的元数据。如果你想读写文件内容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile。

路径问题:

  • 绝对路径:从盘符开始的路径,这是一个完整的路径。如:E:\a.txt
  • 相对路径:相当于项目目录的路径,这个一个便捷的路径。如:…/a.txt

注意:

  • 路径不区分大小写
  • 路径中的文件名称分隔符 window 使用反斜杠\
  • 其他的平台都使用斜杠作为分隔符/。
  • window 的路径分隔符使用\,而Java程序中的\表示转义字符,所以在java中需要使用\\或者直接使用File.separator常量值表示。

File对象文件操作

方法简介
boolean exists()判断文件和目录是否存在
boolean isFile()判断是否是文件
boolean isDirectory()判断是否是目录
String getPath()返回当前路径
String getAbsolutePath()返回此对象的绝对路径
String getName返回文件名称
String getParent()返回路径的上一个层路径
long length返回文件的长度,单位为 字节1024=1KB
String[] list();查看当前目录下第一层的所有文件和文件夹名称 ,字符串数组
File[] listFile();返回当前目录下第一层所有文件和文件夹的File数组对象
CreateNewFile()创建文件,
mkdir()创建目录只能创建一层
mkdirs()创建多层目录
delete()删除文件或者文件夹 删除的文件夹必须是空的一次只能删除一层
lastModified()获取文件最后创建时间
canRead()获取文件是否可读
canWrite()获取文件是否可写
oldFile.renameTo(new File( newFileName));修改文件或者目录名称
file.setWritable(false);设置文件为只读

演示代码

File f=new File("path");
if (f.exists()) {
    System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length()+"字节");
    System.out.println(f.isFile() ? "是文件" : "不是文件");
    System.out.println(f.isDirectory() ? "是目录" : "不是目录");
    System.out.println(f.canRead() ? "可读取" : "不");
    System.out.println(f.isHidden() ? "是隐藏文件" : "不是隐藏文件");
    System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified()));
}

File静态方法

获取根目录 (linux就只有/)

File[] files = File.listRoots();

获取当前环境的路径符号

String separator = File.separator;

创建临时文件,并返回临时文件的FIle对象,

在window系统中临时文件目录: C:\Windows\Temp
在linux系统中临时文件目录: /tmp 或/var/tmp

File test = File.createTempFile("test", ".tmp");

获取各种路径

在操作文件的时候难免会遇到,获取文件路径的问题下面提供几种获取文件路径的办法不同的架构获取的方式也不同

路径整合

将多个路径整合Paths.get() 自动适配路径符

String pat1="C:\\Users\\";
String pat="/aaaa/aaa/a";
String string = Paths.get(pat1, pat).toString();
System.out.println(string);//C:\Users\aaaa\aaa\a

获取classpath路径 (常用)

列: E:\porject\java-utils\common-utils\target\[test-classes或classes] 而classes目录等于resources目录

方案1:

String path = Paths.get(ResourceUtils.getURL("classpath:").getPath().substring(1)).toString();
      System.out.println(path);
      URL resource = Class.class.getResource("/");
      String path1 = Paths.get(resource.getPath().substring(1)).toString();
      System.out.println(path1);

获取Tomcat的bin目录

在不在服务器中 那么就是当前项目的根路径
如果在服务器那么就是Tomcat中bin目录

System.getProperty("user.dir") (会变化的)

常用功能

创建目录

mkdir():只能创建一层目录. mkdirs(): 可以创建多层目录

File myFolderPath = new File("pathdir");
try {
    if (!myFolderPath.exists()) {
        myFolderPath.mkdir();
    }
}
catch (Exception e) {
    System.out.println("新建目录操作出错");
    e.printStackTrace();
}

创建文件

File myFilePath = new File("path_file");
try {
    if (!myFilePath.exists()) {
        myFilePath.createNewFile();
    }
}
catch (Exception e) {
    System.out.println("新建文件操作出错");
    e.printStackTrace();
}

判断文件或文件夹是否存在

都是使用 exists()
比如文件是否存在: c:xxxx/xx/a.txt
比如目录是否存在: c:xxxx/xx/

File str1 = new File("path");
if (str1.exists()) {
    System.out.println("存在");
}

判断是文件还是文件夹

File str1=new File("path");
    if(str1.isFile()){
        System.out.println("是文件");
    }
    if(str1.isDirectory()){
        System.out.println("是目录");
    }

判断是否是绝对路径

public  static boolean isAbsolute( String file){
      File file1=new File(file);
      return file1.isAbsolute();
  }

判断是否是隐藏文件

也就是是文件名是.开头的 或者是手动将文件设置为隐藏文件

那么他就是隐藏文件

 public static boolean isHidden( String file){
      File file1=new File(file);
      return file1.isHidden();
  }

删除文件或者整个文件夹

包括文件夹下的子文件夹以及文件全部删除

public  static boolean delDirectoryAndFileAll(String path){
        File delfile = new File(path);
        if (!delfile.exists()) {
            System.out.println("要删除的文件或目录不存在");
            return false;
        }
        File[] files=delfile.listFiles();
        if (files!=null){
            int length = files.length;
            for(int i=0;i<length;i++){
                if (files[i].isDirectory()){
                    delDirectoryAndFileAll(files[i].getPath());
                }
                files[i].delete();
            }
        }

        //将path也一起删除
        delfile.delete();
        return true;
    }

读取指定目录下全部文件

 //获取指定路径下所有文件
    public static List<String> getFiles(String path) {
        List<String> list = new ArrayList<>();
        getFiles(path, list);
        return list;
    }
    private static void getFiles(String path, List<String> list) {
        File file = new File(path);
        if (!file.exists()) {
            System.out.println("文件目录不存在");
            return;
        }
        //获取当前目录文件集合
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {//判断是否是目录
                getFiles(files[i].getPath(),list);
            } else {
                list.add(files[i].getAbsolutePath());
            }
        }
    }

提取文件后缀

不加点比如 txt js png

public static String   suffix( String file){
      File str1=new File(file);
		//提取扩展名
      String str2=str1.getPath().substring(str1.getPath().lastIndexOf(".")+1);
       return str2;
  }

获取当前时间和文件创建时间差


public long dateFile(String file,int num){
        File file1=new File(file);
    long nd = 1000 * 24 * 60 * 60;
    long  diff=new Date().getTime() - new Date(file1.lastModified()).getTime();
    switch (num){
        case 1:
            // 获得两个时间的毫秒时间差异
            return  diff;
        case 2:
            return diff / nd;
        default:
            return  diff;
    }
}
    @Test
    public  void show()  {
        String path="文件";
        long l = dateFile(path, 2);
        System.out.println(l);
    }

文件和文件夹进行按需排序

package org.app.test;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
//缺点就是不能直接对 盘符进行 扫描 比如C:\\  或者F:\\       只能针对某个文件夹
public class Dir_File_List {
    private List<File>   folder_list=new ArrayList<>();//文件夹
    private List<File> file_list=new ArrayList<>();//文件
    //排序  规则
    //文件夹 按照名称 排序 从短到长
    private   boolean dir_name=false;
    //文件夹 按照大小 排序 从小到大
    private  boolean dir_size=false;
    //文件夹创建时间  排序  从 最近到最远
    private  boolean dir_time=true;
    //文件 按照名称  排序 从短到长
    private  boolean  file_name=false;
    //文件 按照大小  排序 从小到大
    private   boolean file_size=false;
    //文件创建时间  排序  从 最近到最远
    private  boolean file_time=true;
    //可以同时多开 排序规则  不会冲突
    
    // 是否判 包括子文件
    Boolean  pddirZi=true;
    public  void  pathFile(String path){
        File file=new File(path);
        if (!file.exists()){
            System.out.println("找不到路径");
            return;
        }
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()){
                folder_list.add(file1);
                if(pddirZi){
                    pathFile(file1.getPath());
                }
            }
            if (file1.isFile()){
                file_list.add(file1);
            }
        }
    }
    public  void  compare_lis() {
        if (dir_name) {
            //文件夹按文件名称的长度 显示的顺序:  从短到 长
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (o11.getName().length() - o22.getName().length());
                }
            });
        }
        if (file_name) {
            //按文件名称的长度 显示的顺序:  从短到 长
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (o11.getName().length() - o22.getName().length());
                }
            });
        }
        if (dir_size) {
            //按照文件夹大小 再次排序  最大的文件 放在最后
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) (o11.length() - o22.length());
                }
            });
        }
        if (file_size) {
            //按照文件大小 再次排序  最大的文件 放在最后
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) (o11.length() - o22.length());
                }
            });
        }
        if (dir_time) {
            //然后文件夹创建时间 排序 从近到远
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) ( o22.lastModified()-o11.lastModified());
                }
            });
        }
        if(file_time){
            //然后文件大小 再次排序  最大的文件 放在最后
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) ( o22.lastModified()-o11.lastModified());
                }
            });
        }
    }
    public void dir_file_list(String path,boolean px){
        pathFile(path);
        if (px){
            compare_lis();//排序
        }
    }
    public List<File> getFolder_list() {
        return folder_list;
    }
    public List<File> getFile_list() {
        return file_list;
    }
    public Dir_File_List() {
    }
    
    public Dir_File_List(boolean dir_name, boolean dir_size, boolean dir_time, boolean file_name, boolean file_size, boolean file_time) {
        this.dir_name = dir_name;
        this.dir_size = dir_size;
        this.dir_time = dir_time;
        this.file_name = file_name;
        this.file_size = file_size;
        this.file_time = file_time;
    }
    //查看C盘中指定路径下所有的文件和文件夹名称,并且指定排序规则进行排序
    public static void main(String[] args) {
        Dir_File_List list=new Dir_File_List();
        String path = "C:\\Users\\12841\\Desktop\\Docker";
        //如何 排序 自己根据构造来 修改
        boolean px=false; //开启排序
        list.dir_file_list(path,px);
        System.out.println("所有的文件夹" + list.getFolder_list()); //排序规则:  创建时间  排序  从 最近到最远
        System.out.println("所有的文件" + list.getFile_list()); //排序规则了:   创建时间  排序  从 最近到最远
    }
}

文件随机名称28-34位

public static String Name_tuP(){
    char[] ch={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    char[] Ch={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    Calendar cal = Calendar.getInstance();
    Random sun=new Random();

    int num1=sun.nextInt(1000);//0-1000随机数
    StringBuilder time=new StringBuilder();
    time.append(num1+"-");//随机数
    time.append(cal.get(Calendar.YEAR)); //年
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.MONTH) + 1);//月
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.DAY_OF_MONTH));//日
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.HOUR_OF_DAY));//时
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.MINUTE));//分
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.SECOND));//秒
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]+"-");
    int num=sun.nextInt(1000);//0-1000随机数
    time.append(num);//随机数
    return time.toString();
}

类似于这种格式 : 833-2020mR6pK7sN17zT54zE56aH-229 2020年 6月 7日 17点 54 分 56 秒

到此这篇关于Java Io File文件操作的文章就介绍到这了,更多相关Java Io File操作内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java Io File文件操作基础教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux基础IO【文件理解与操作】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Great minds discuss ide
2023-08-18

【创作赢红包】| 【Linux】 基础IO——自己实现文件接口FILE

文章目录 1. 创建makefile2. mystdio.h ——接口的声明3. mystdio.c —— 接口的实现1. MY_fopen的实现1.识别标志位2. 尝试打开文件3. 给用户返回MY_FILE对象,需要先创建对象4.
2023-08-20

Java基础知识之I/O流和File类文件操作方法

今天小编给大家分享一下Java基础知识之I/O流和File类文件操作方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。♒I/
2023-06-30

python3基础:文件操作

相对路径和绝对路径相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。比如 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bi
2023-01-31

python文件基础之(文件操作)

在之前学习了python的列表、元组、集合等知识,接下来将python的文件相关的知识做一总结和分析。一 open函数 在我们用word、excel、vim对文件操作时,肯定要先打开文件,同样在编程里面也是需要将文件打开,然后再对文件操作,
2023-01-31

Java中File文件操作类的超详细使用教程

File类在包java.io.File下、代表操作系统的文件对象(文件、文件夹),File类提供了诸如:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能,下面这篇文章主要给大家介绍了关于Java中File文件操作类的超详细使用教程,需要的朋友可以参考下
2023-01-18

python基础-文件操作(10)

一、什么是文件等等这些都叫做文件,各种格式的。但不仅仅限制于这些。 二、文件的作用大家应该听说过一句话:“好记性不如烂笔头”。不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把
2023-01-31

Python基础:文件的操作

一、python可以在不导入任何模块的情况下对文件完成读、写、追加,替换(稍复杂)。二、打开文件:        1、f = open('text.txt')            这种方式打开,操作完后需要使用f.colse()关闭。  
2023-01-31

MySQL基础教程5 —— 操作符

1. 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序。排列在同一行的操作符具有相同的优先级。 := ||, OR, XOR &&, AND NOT BETWEEN, CASE, WHEN, THEN, ELSE =, <=>, >
2022-05-24

java IO 文件操作方法总结

java IO 文件操作方法总结对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成。程序将数据给外部设备,通过输出流完成。文件Io的操作//获取文件File file=new File("d:/a.txt
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录