File类 --java学习笔记

news2024/12/26 22:15:52

在java中,存储数据一般有如下几种方法:

而它们都是内存中的数据容器
它们记住的数据,在断电,或者程序终止时会丢失

这种时候就可以使用File类和Io流,就数据存储在文件中

File

  • File是java.io.包下的类, File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)
  • 注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据

File对象的创建方法

File.separator:代替路径分隔符(/、\\...),跨平台

绝对路径、相对路径

  • 绝对路径:从盘符开始
  • 相对路径:不带盘符,默认直接到当前工程下的目录寻找文件

File提供的判断文件类型、获取文件信息功能

代码演示:

import java.io.File;
import java.text.SimpleDateFormat;

public class FileIoTest2 {
    public static void main(String[] args) {
        //1.创建文件对象,指代某个文件
        File f1 = new File("D:/File/dzy.txt");
        // 2、public boolean exists():判断当前文件对象,对应的文件路径是否存在,存在返回true.
        System.out.println(f1.exists());    //true
        // 3、public boolean isFile(): 判断当前文件对象指代的是否是文件,是文件返回true,反之。
        System.out.println(f1.isFile());    //true
        // 4、public boolean isDirectory() : 判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。
        System.out.println(f1.isDirectory());   //false
        // 5.public string getName():获取文件的名称(包含后缀)
        System.out.println(f1.getName());   //dzy.txt
        // 6.public long length():获取文件的大小,返回字节个数
        System.out.println(f1.length());    //9
        // 7.public long lastModified():获取文件的最后修改时间。
        long time = f1.lastModified();  //2024-03-21 21:23:18
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(time));
        // 8.public string getPath():获取创建文件对象时,使用的路径
        System.out.println(f1.getPath());   //D:\File\dzy.txt
        // 9.public string getAbsolutePath():获取绝对路径
        System.out.println(f1.getAbsolutePath());   //D:\File\dzy.txt
    }
}

运行结果:

File类创建文件的功能

File类删除文件的功能

注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站

代码演示:

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

public class FileIoTest3 {
    public static void main(String[] args) throws IOException {
        //1、public boolean createNewFile():创建一个新文件(文件内容为空),创建成功返回true,反之。
        File f1 = new File("D:/File/a.txt");
        System.out.println(f1.exists());    //false
        System.out.println(f1.createNewFile()); //true
        // 2、public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹
        File f2 = new File("D:/File/ddd");
        System.out.println(f2.mkdir());     //true
        // 3、public boolean mkdirs():用于创建文件夹,注意:可以创建多级文件夹
        File f3 = new File("D:/File/aaa/bbb/ccc");
        System.out.println(f3.mkdirs());    //true
        //3、public boolean delete():删除文件,或者空文件,注意:不能删除非空文件夹。
        System.out.println(f1.delete());    //true
        System.out.println(f2.delete());    //true
        File f4 = new File("D/File");
        System.out.println(f4.delete());    //false
    }
}

运行结果:

File类提供的遍历文件夹的功能

代码演示:

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

public class FileIoTest4 {
    public static void main(String[] args) throws IOException {
    //1、public string[] list():获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
        File f1 = new File("D:/File");
        String[] list = f1.list();
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------------------------------------");

        //2、public File[]listFiles():(重点)获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
        System.out.println("-------------------------------------------");
        //通过递归和listFiles()遍历文件夹下每个文件
        Arrays.stream(files).forEach(f -> new FileAllName() {
            @Override
            public void AllName(File f) {
                System.out.println(f.getName());
                if(f.isDirectory()){
                    for (File file : f.listFiles()) {
                        AllName(file);
                    }
                }
            }
        }.AllName(f));
    }
}

interface FileAllName{
    void AllName(File f);
}

运行结果:

使用listFiles方法时的注意事项:

  • 当主调是文件,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组
  • 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1564106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Linux]基础IO(中)---理解重定向与系统调用dup2的使用、缓冲区的意义

重定向理解 在Linux下,当打开一个文件时,进程会遍历文件描述符表,找到当前没有被使用的 最小的一个下标,作为新的文件描述符。 代码验证: ①:先关闭下标为0的文件,在打开一个文件,…

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站 一、安装 geoip2 扩展依赖 [rootfxkj ~]# yum install libmaxminddb-devel -y二、下载 ngx_http_geoip2_module 模块 [rootfxkj tmp]# git clone https://github.com/leev/ngx_http_geoip2_module.git三、解压模…

android 使用ollvm混淆so

使用到的工具 ndk 21.4.7075529(android studio上下载的)cmake 3.10.2.4988404(android studio上下载的)llvm-9.0.1llvm-mingw-20230130-msvcrt-x86_64.zipPython 3.11.5 环境配置 添加cmake mingw环境变量如下图: 编译 下载…

代码随想录算法训练营第四十一天|343. 整数拆分,96. 不同的二叉搜索树

343. 整数拆分 题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 输入: n 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 解题思路 dp[i] …

Python读取Excel根据每行信息生成一个PDF——并自定义添加文本,可用于制作准考证

文章目录 有点小bug的:最终代码(无换行):有换行最终代码无bug根据Excel自动生成PDF,目录结构如上 有点小bug的: # coding=utf-8 import pandas as pd from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from reportlab.pdfbase import pdf…

每日五道java面试题之消息中间件MQ篇(三)

目录: 第一题. 如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?第二题. 如何保证RabbitMQ消息的可靠传输?第三题. 为什么不应该对所有的 message 都使用持久化机制?第四题. 如何保证高可用的&#…

腾讯云2024年4月优惠券及最新活动入口

腾讯云是腾讯集团倾力打造的云计算品牌,提供全球领先的云计算、大数据、人工智能等技术产品与服务。为了吸引用户上云,腾讯云经常推出各种优惠活动。本文将为大家分享腾讯云优惠券及最新活动入口,助力大家轻松上云! 一、优惠券领取…

IO-DAY4

使用文件IO 实现父进程向子进程发送信息&#xff0c;并总结中间可能出现的各种问题 #include<myhead.h> char* my_write(char *buf) {int wfdopen("./write.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);write(wfd,buf,sizeof(buf));close(wfd);return buf; } char* …

一.基本指令(1.1)

一、操作系统&#xff1a; 1.1本质&#xff1a; 操作系统是一款进行软硬件资源管理的软件。 1.2操作系统如何管理硬件&#xff1a; 硬件接入电脑&#xff0c;操作系统装载硬件的驱动之后&#xff0c;硬件就会被纳入操作系统的管理体系。因此&#xff0c;有时一些硬件初次接入电…

HTTPS跟HTTP有区别吗?

HTTPS和HTTP的区别&#xff0c;白话一点说就是&#xff1a; 1. 安全程度&#xff1a; - HTTP&#xff1a;就像是你和朋友面对面聊天&#xff0c;说的话大家都能听见&#xff08;信息明文传输&#xff0c;容易被偷听&#xff09;。 - HTTPS&#xff1a;就像是你们俩戴着加密耳机…

【js刷题:数据结构数组篇之有序数组的平方】

有序数组的平方 一、题目二、解题方法1、暴力解法2、双指针思路代码 三、力扣刷题合并两个有序数组 一、题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 二、解题方法 1、暴力解法 c…

RESTful规范总结

概念&#xff1a;RESTful&#xff08;Representational State Transfer 的缩写&#xff09;是一种广泛使用的API架构风格。 1.资源&#xff1a;在REST API的设计中&#xff0c;首先需要面向资源建模&#xff0c;其中每个节点是是一个简单资源或集合资源。 1.1一个集合包含相同…

Win10本地搭建HTTP服务器和FTP服务器

一、开启windows功能 1.进入电脑控制面板-程序-启用或关闭windows功能 2.勾选这3个功能以及展开的全部勾选 二、搭建http服务器 1.打开Internet Information Server&#xff08;IIS&#xff09;管理器 在开始菜单里面找到IIS管理器管理控制台或者搜索IIS打开 2.添加网站 进…

【原创】基于springboot+vue学生信息管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

<网络> 网络Socket 编程基于UDP协议模拟简易网络通信

目录 前言&#xff1a; 一、预备知识 &#xff08;一&#xff09;IP地址 &#xff08;二&#xff09;端口号 &#xff08;三&#xff09;端口号与进程PID &#xff08;四&#xff09;传输层协议 &#xff08;五&#xff09;网络字节序 二、socket 套接字 &#xff08;…

图的应用试题

01&#xff0e;任何一个无向连通图的最小生成树( )。 A.有一棵或多棵 B.只有一棵 C.一定有多棵 D.可能不存在 02.用Prim算法和Kruskal算法构造图的最小生成树&#xff0c;…

Kitex 提供的服务注册与发现 etcd 拓展

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列、spring教程等&#xff0c;大家有兴趣的可以看一看 &#x1f4d9;Jav…

Navicat for MySQL 15免费注册方法

一、效果图如下&#xff1a; 注&#xff1a;此方法仅用于非商业用途&#xff0c;请勿传播&#xff0c;否则后果自负。 二、下载安装 下载安装包&#xff0c;分为32位和6位&#xff0c;下载文件名&#xff1a;Navicat for MySQL 15.zip&#xff08;https://download.csdn.net/…

阿赵UE学习笔记——23、动画蒙太奇

阿赵UE学习笔记目录   大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用方法。上一篇介绍了动画合成功能&#xff0c;这次介绍的动画蒙太奇&#xff0c;和动画合成有很多类似的东西&#xff0c;但本质上却又不同。   蒙太奇是法语“剪接”的意思。所以动画蒙太奇&…

2024年03月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析

本文收录于专栏《Scratch等级认证CCF-GESP真题解析》,专栏总目录・点这里. 一、单选题(共 10 题,每题 3 分,共 30 分) 第1题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )。 A、小程序 B、计时器 C、操作系统 D、神话人物 答案:…