文件操作与IO(2)

Java中通过java.io.File类来对一个文件(包括目录)进行抽象的描述.注意,有File对象,并不代表真实存在该文件.

File概述

我们先来看看File类中的常见属性,构造方法和方法.

属性

修饰符及类型属性说明
static StringpathSeparator依赖系统的路径分隔符,String类型的表示
static charpathSeparator依赖于系统的路径分隔符,char类型的表示

构造方法

签名说明
File(File parent, String child)根据父目录 + 孩子文件路径,创建一个新的File实例
File(String pathname)根据文件路径创建一个新的File实例,路径可以是绝对路径也可以是相对路径
File(String parent, String child)根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示

其中,在File(String pathname)中:

这个路径也可以是不存在的路径.

构造一个File对象,需指定路径,此处路径可以是相对的也可以是绝对的.

如果写作绝对路径: (1)如直接在idea中 运行程序.此时工作目录就是项目所在目录.

(2)如果是把代码打包成一个单独的jar包来执行,此时工作目录就是jar包所在目录.

 方法

修饰符及返回值的类型方法签名说明
StringgetParent()返回File对象的父目录文件路径
StringgetName()返回File对象的纯文件名称
StringgetPath()返回File对象的文件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象的修饰过的绝对路径
booleanexists()判断File对象描述的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据File对象,自动创建一个空文件.成功创建后返回true.
booleandelete()根据File对象,删除该文件.成功删除后返回true.
voiddeleteOnExit()

根据File对象,标注文件将被删除,

删除动作会到JVM运行结束后才会运行

String[]list()返回File对象代表下目录的所有文件名
File[]listFiles()返回File对象代表的目录下的所有文件,以File对象表示
booleanmkdir()创建File对象代表的目录
booleanmkdirs()创建File对象代表的目录,如果必要,会创建中间目录
boolean

renameTo(File dest)

进行文件改名,也可视为我们平时的剪切,粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

代码示例

示例1:观察get系列的观点与差异:

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

public class FileTest1 {
    public static void main(String[] args) throws IOException {
        File file = new File("C:/code/gitee秘密通道/Java所有代码/test _1_20/test.txt");

        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

运行结果:

 

注意:

 ​

 如果构造File对象使用绝对路径,最后三个方法的操作结果确实没区别.但如果这样的话:

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

public class FileTest1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");

        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

得出结果:

 

这时就有了明显的区别:

1.getPath()的结果就是File构造方法中的参数.

2. getAbsolutePath()中,此处是先一层一层找到system_code这一级目录,然后再找 . ,此时 . 就相当于原地踏步了一下

示例二

普通文件的创建

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

public class FileTest2 {
    public static void main(String[] args) throws IOException {
        File file = new File("hello-world.txt"); //要求该文件不存在
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
    }
}

运行结果:

 

同时,也在旁边创建出了这个文件:

 

示例三:

普通文件的删除

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

public class FileTest3 {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt");
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.delete());
        System.out.println(file.exists());
    }
}

运行结果:

 

示例4

观察deleteOnExit的现象

退出之后再删除,这样的文件,也称为"临时文件"->很有用有一些程序有这个.

作用:给你实时编辑的内容进行保存.防止文件没保存,机器突然pia~一下断电的情况 

 

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

import static java.lang.Thread.sleep;

public class FileTest4 {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file = new File("some-file.txt"); //要求该文件不存在,才能看到
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        sleep(5000);
        file.deleteOnExit();

        System.out.println(file.exists());
    }
}

结果:

 

程序运行结束后,文件还是被删除了.

示例5

观察目录的创建

 

import java.io.File;

public class FileTest5 {
    public static void main(String[] args) {
        File dir = new File("some-dir"); //要求该目录不存在,才能看到相同的现象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:

 

同时,亦创建了一个新目录:

 

示例6

观察目录创建2

import java.io.File;

public class FileTest6 {
    public static void main(String[] args) {
        File dir = new File("some-parent\\some-dir");
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdirs());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:

 

同时:亦创建了一个新目录:

 

注意:如果使用mkdir(),如果中间目录不存在(这里就是some-parent不存在),则无法创建成功;

mkdirs()可以解决这个问题. 

 示例7

观察文件重命名:

import java.io.File;

public class FileTest7 {
    public static void main(String[] args) {
        File file = new File("hello-world.txt"); //这个要存在
        File dest = new File("dest.txt"); //要求这个不存在
        System.out.println(file.exists());
        System.out.println(dest.exists());
        System.out.println(file.renameTo(dest));
        System.out.println(file.exists());
        System.out.println(dest.exists());
    }
}

运行结果:

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VM使用教程--SDK取图 视频笔记

本笔记均由海康机器人官网的V学院视频中记录所得,属于省流大师了[doge] 图像采集 图像采集包括1图像源,2多图采集,3输出图像,4缓存图像,5光源 1图像源 图像源包括本地图像,相机采图,SDK 本…

MySQL主从集群

MySQL主从集群 主从模式、集群模式,都是在一个项目中使用多个mysql节点进行存储和读取数据。 当单机模式部署,不满足安全性、高可用、高并发等需求的时候,就需要考虑主从模式或者集群模式部署。 什么是主从模式? 主从模式&…

结构体大揭秘:代码中的时尚之选(上)

目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合,这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量,当然也可以是相同类型的。 我们在生活…

【数据库原理】(38)数据仓库

数据仓库(Data Warehouse, DW)是为了满足企业决策分析需求而设计的数据环境,它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持企业管理和…

DAY06_SpringBoot—入门properties/YML文件lombok插件及使用

目录 1 SpringBoot1.1 SpringBoot介绍1.2 SpringBoot入门案例1.2.1 安装SpringBoot插件1.2.2 创建SpringBoot项目 1.3 关于SpringBoot项目说明1.3.1 关于POM.xml文件说明1.3.2 依赖配置项1.3.3 build标签 1.4 SpringBoot Maven操作1.4.1 项目打包1.4.2 java命令运行项目 1.5 关…

数据脱敏(二)脱敏算法-哈希脱敏

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 哈希脱敏是一种数据安全处理技术,主要用于保护敏感信息。它将原始数据(如密码、身份证号等)通过哈希算法转换成固定长度的哈希值,即使哈希值被泄露&a…

【GitHub项目推荐--老照片变清晰】【转载】

先来看一个效果图,这个开源项目能把模糊爆浆的老照片 1 s 内变成清晰、高清的有色照片。 而以上这些效果,无需专业 PS 技能,只用一个网页端的 Demo、点点鼠标上传图片就能搞定。 这个修复神器,由腾讯 PCG ARC 实验室研发&#xf…

Java 面向对象 06 对象内存图(黑马)

之前设计的如下图: 方法区和内存在物理上是一块的,但是有不好的地方,所以变成了这种形式: 一个对象的内存图: 在创建对象时虚拟机至少做了以下七步: 解释: 第一步: 第二步&#x…

使用golang对接微软Azure AI翻译

文章目录 一、官方地址二、准备工作三、代码示例 一、官方地址 https://learn.microsoft.com/zh-CN/azure/ai-services/translator/translator-text-apis?tabsgo 二、准备工作 创建服务 创建服务连接地址:https://portal.azure.com/#create/Microsoft.CognitiveS…

如何本地部署虚拟数字克隆人 SadTalker

环境: Win10 SadTalker 问题描述: 如何本地部署虚拟数字克隆人 SadTalker 解决方案: SadTalker:学习逼真的3D运动系数,用于风格化的音频驱动的单图像说话人脸动画 单张人像图像🙎 ♂️音频&#x1f3…

数据结构:顺序循环队列

队列是限制在两端操作进行插入操作与删除操作的线性表,允许进行插入操作的一端称为"队尾",允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。队列的特点是先进先出。 队列两种规定: 1、front…

算法第二十一天-丑数

丑数 题目要求 解题思路 首先判断数字是不是为0或者负数&#xff0c;两者均不可能成为丑数&#xff1b; 之后对n进行不断整除&#xff0c;直到无法除尽为止。 简单判断最后的数是不是1即可。 代码 class Solution:def isUgly(self, n: int) -> bool:if n<0:return Fa…

1.redhat网卡配置

想要通过cmd ping通redhat 1.在redhat输入:ifconfig 将自己主机网络适配器VMware Network Adapter VMnet1的IPv4配置在同一网段,掩码是255.255.255.0,所以最后一位不同就可以 推荐用FileZilla远程上传文件

【手撕C语言 第六集】函数(上)

文章目录 一、函数是什么&#xff1f;二、C语言中函数的分类&#xff1a;1.库函数1.1 如何学会使用库函数&#xff1f; 2. 自定义函数 三、函数的参数1.实际参数&#xff08;实参&#xff09;&#xff1a;2.形式参数&#xff08;形参&#xff09;&#xff1a; 四、函数的调用&a…

Java研学-spring框架(一)

一 概述 1 介绍 Spring框架是一个开源的Java EE应用程序框架&#xff0c;旨在简化Java企业级应用的开发难度和开发周期&#xff0c;主要通过控制反转&#xff08;IoC&#xff09;和面向切面编程&#xff08;AOP&#xff09;等技术实现。   容器&#xff08;Container&#x…

会计六要素

目录 会计六要素(一&#xff09;资产(二&#xff09;负债(三&#xff09;所有者权益(四&#xff09;收入、费用和利润一、收入二、费用三、利润 \quad 会计六要素 我国《企业会计准则》将企业会计要素分为 资产 负债 所有者权益 收入 费用 利润 \quad (一&#xff09;资产 定…

代码随想录二刷 |回溯 | 组合

代码随想录二刷 &#xff5c;回溯 &#xff5c; 组合 题目描述解题思路代码实现 题目描述 77.组合 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 递归…

软考高项重点总结!看这一篇就够了❗️

&#x1f4da;信息系统项目管理师第四版g方教材有700多页&#xff0c;很多考生在翻书的时候总觉得书上内容太多&#xff0c;知识点也记不住&#xff0c;不知道哪些是重点。 &#x1f618;那今天我们来梳理一下。 &#x1f50d;这本书是有24章&#xff0c;但也不是都要精通的&am…

智慧文旅一机游:科技与文化的完美结合,引领智慧文旅新潮流,智慧旅游未来已来

一、科技与文化的完美结合&#xff1a;智慧文旅一机游的核心理念 智慧文旅一机游&#xff0c;是科技与文化相融合的产物&#xff0c;它不仅代表着旅游行业的创新与发展&#xff0c;更是一种文化与科技完美结合的生活方式。一机游的核心理念在于通过先进的科技手段&#xff0c;提…

java使用jsch处理软链接判断是否文件夹

前言 这一次主要是碰到一个问题。因为使用jsch去读取文件的时候&#xff0c;有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹&#xff1f;因为他没有提供可以直接读取的方法&#xff0c;用权限信息去判断…