当前位置: 首页 > news >正文

IO类day01

File类

File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)

使用File可以做到:

  • 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等

  • 2:创建和删除文件或目录

  • 3:访问一个目录中的子项

但是File不能访问文件数据.

public class FileDemo {public static void main(String[] args) {//使用File访问当前项目目录下的demo.txt文件/*创建File时要指定路径,而路径通常使用相对路径。相对路径的好处在于有良好的跨平台性。"./"是相对路径中使用最多的,表示"当前目录",而当前目录是哪里取决于程序运行环境而定,在idea中运行java程序时,这里指定的当前目录就是当前程序所在的项目目录。*/
//        File file = new File("c:/xxx/xxx/xx/xxx.txt");File file = new File("./demo.txt");//获取名字String name = file.getName();System.out.println(name);//获取文件大小(单位是字节)long len = file.length();System.out.println(len+"字节");//是否可读可写boolean cr = file.canRead();boolean cw = file.canWrite();System.out.println("是否可读:"+cr);System.out.println("是否可写:"+cw);//是否隐藏boolean ih = file.isHidden();System.out.println("是否隐藏:"+ih);
​}
​
}
创建一个新文件

createNewFile()方法,可以创建一个新文件

package file;
​
import java.io.File;
import java.io.IOException;
​
/*** 使用File创建一个新文件*/
public class CreateNewFileDemo {public static void main(String[] args) throws IOException {//在当前目录下新建一个文件:test.txtFile file = new File("./test.txt");//boolean exists()判断当前File表示的位置是否已经实际存在该文件或目录if(file.exists()){System.out.println("该文件已存在!");}else{file.createNewFile();//将File表示的文件创建出来System.out.println("文件已创建!");}
​}
}
删除一个文件

delete()方法可以将File表示的文件删除

package file;
​
import java.io.File;
​
/*** 使用File删除一个文件*/
public class DeleteFileDemo {public static void main(String[] args) {//将当前目录下的test.txt文件删除/*相对路径中"./"可以忽略不写,默认就是从当前目录开始的。*/File file = new File("test.txt");if(file.exists()){file.delete();System.out.println("文件已删除!");}else{System.out.println("文件不存在!");}}
}
创建目录

mkDir():创建当前File表示的目录

mkDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建

package file;
​
import java.io.File;
​
/*** 使用File创建目录*/
public class MkDirDemo {public static void main(String[] args) {//在当前目录下新建一个目录:demo
//        File dir = new File("demo");File dir = new File("./a/b/c/d/e/f");
​if(dir.exists()){System.out.println("该目录已存在!");}else{
//            dir.mkdir();//创建目录时要求所在的目录必须存在dir.mkdirs();//创建目录时会将路径上所有不存在的目录一同创建System.out.println("目录已创建!");}}
}
删除目录

delete()方法可以删除一个目录,但是只能删除空目录。

package file;
​
import java.io.File;
​
/*** 删除一个目录*/
public class DeleteDirDemo {public static void main(String[] args) {//将当前目录下的demo目录删除File dir = new File("demo");
//        File dir = new File("a");if(dir.exists()){dir.delete();//delete方法删除目录时只能删除空目录System.out.println("目录已删除!");}else{System.out.println("目录不存在!");}}
}
访问一个目录中的所有子项

listFiles方法可以访问一个目录中的所有子项

package file;
​
import java.io.File;
​
/*** 访问一个目录中的所有子项*/
public class ListFilesDemo1 {public static void main(String[] args) {//获取当前目录中的所有子项File dir = new File(".");/*boolean isFile()判断当前File表示的是否为一个文件boolean isDirectory()判断当前File表示的是否为一个目录*/if(dir.isDirectory()){/*File[] listFiles()将当前目录中的所有子项返回。返回的数组中每个File实例表示其中的一个子项*/File[] subs = dir.listFiles();System.out.println("当前目录包含"+subs.length+"个子项");for(int i=0;i<subs.length;i++){File sub = subs[i];System.out.println(sub.getName());}}}
}
获取目录中符合特定条件的子项

重载的listFiles方法:File[] listFiles(FileFilter)

该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。

package file;
​
import java.io.File;
import java.io.FileFilter;
​
/*** 重载的listFiles方法,允许我们传入一个文件过滤器从而可以有条件的获取一个目录* 中的子项。*/
public class ListFilesDemo2 {public static void main(String[] args) {/*需求:获取当前目录中所有名字以"."开始的子项*/File dir = new File(".");if(dir.isDirectory()){
//            FileFilter filter = new FileFilter(){//匿名内部类创建过滤器
//                public boolean accept(File file) {
//                    String name = file.getName();
//                    boolean starts = name.startsWith(".");//名字是否以"."开始
//                    System.out.println("过滤器过滤:"+name+",是否符合要求:"+starts);
//                    return starts;
//                }
//            };
//            File[] subs = dir.listFiles(filter);//方法内部会调用accept方法
​File[] subs = dir.listFiles(new FileFilter(){public boolean accept(File file) {return file.getName().startsWith(".");}});System.out.println(subs.length);}}
}

Lambda表达式

JDK8之后,java支持了lambda表达式这个特性.

  • lambda可以用更精简的代码创建匿名内部类.但是该匿名内部类实现的接口只能有一个抽象方法,否则无法使用!

  • lambda表达式是编译器认可的,最终会将其改为内部类编译到class文件中

package lambda;
​
import java.io.File;
import java.io.FileFilter;
​
/*** JDK8之后java支持了lambda表达式这个特性* lambda表达式可以用更精简的语法创建匿名内部类,但是实现的接口只能有一个抽象* 方法,否则无法使用。* lambda表达式是编译器认可的,最终会被改为内部类形式编译到class文件中。** 语法:* (参数列表)->{*     方法体* }*/
public class LambdaDemo {public static void main(String[] args) {//匿名内部类形式创建FileFilterFileFilter filter = new FileFilter() {public boolean accept(File file) {return file.getName().startsWith(".");}};
​FileFilter filter2 = (File file)->{return file.getName().startsWith(".");};
​//lambda表达式中参数的类型可以忽略不写FileFilter filter3 = (file)->{return file.getName().startsWith(".");};
​/*lambda表达式方法体中若只有一句代码,则{}可以省略如果这句话有return关键字,那么return也要一并省略!*/FileFilter filter4 = (file)->file.getName().startsWith(".");}
}
​

总结:

File类

File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)

使用File可以做到:

  • 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等

  • 2:创建和删除文件或目录

  • 3:访问一个目录中的子项

常用构造器:

  • File(String pathname)

  • File(File parent,String name)可参考文档了解

常用方法:

  • length():返回一个long值,表示占用的磁盘空间,单位为字节。

  • canRead():File表示的文件或目录是否可读

  • canWrite():File表示的文件或目录是否可写

  • isHidden():File表示的文件或目录是否为隐藏的

  • createNewFile():创建一个新文件,如果指定的文件所在的目录不存在会抛出异常java.io.FileNotFoundException

  • mkdir:创建一个目录

  • mkdirs:创建一个目录,并且会将所有不存在的父目录一同创建出来,推荐使用。

  • delete():删除当前文件或目录,如果目录不是空的则删除失败。

  • exists():判断File表示的文件或目录是否真实存在。true:存在 false:不存在

  • isFile():判断当前File表示的是否为一个文件。

  • isDirectory():判断当前File表示的是否为一个目录

  • listFiles():获取File表示的目录中的所有子项

  • listFiles(FileFilter filter):获取File表示的目录中满足filter过滤器要求的所有子项

相关文章:

IO类day01

File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等 2:创建和删除文件或目录 3:访问一个目录中的子项 但是File不能访问文件数据. pu…...

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》&#xff08;A&#xff09;试题&#xff08;开卷&#xff09; 题目&#xff1a;以某一 web 系统为测试对象&#xff0c;完成以下文档的编写&#xff1a; &#xff08;满分 100 分&#xff09; &#xff08;1&am…...

适用于任何公司的网络安全架构

1.第一等级:基础级 优势 可防范基本有针对性的攻击&#xff0c;使攻击者难以在网络上推进。将生产环境与企业环境进行基本隔离。 劣势 默认的企业网络应被视为潜在受损。普通员工的工作站以及管理员的工作站可能受到潜在威胁&#xff0c;因为它们在生产网络中具有基本和管理…...

Excel:通过excel将表数据批量转换成SQL语句

这里有一张表《student》&#xff0c;里面有10条测试数据&#xff0c;现在将这10条测试数据自动生成 insert语句&#xff0c;去数据库 批量执行 P.S. 主要用到excel表格中的 CONCATENATE函数&#xff0c;将单元格里面的内容填入到sql里面对应的位置 1. 先写好一条insert语句&a…...

Android linphone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题&#xff0c;需要指定编码。查了下配置&#xff0c;里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…...

Hyperledger Fabric Orderer 配置解析

文中使用的 fabric 版本为 2.4.1 排序节点在 Fabric 网络中为 Peer 提供排序服务。与 Peer 节点类似&#xff0c;排序节点支持从命令行参数、环境变量或配置文件中读取配置信息。环境变量中配置需要以 ORDERER_前缀开头&#xff0c;例如&#xff0c;配置文件中的 general.Liste…...

苹果电脑交互式原型设计软件Axure RP 9 mac特色介绍

Axure RP 9 for Mac是一款交互式原型设计软件&#xff0c;使用axure rp9以最佳的方式展示您的作品&#xff0c;优化现代浏览器并为现代工作流程设计。同时确保您的解决方案正确完整地构建。Axure RP 9 for Mac为您整理笔记&#xff0c;将其分配给UI元素&#xff0c;并合并屏幕注…...

Java 判断实体类对象的全部属性是否空

public boolean checkObjAllFieldsIsNull(Object object) {// 如果对象为null直接返回trueif (null object) {return true;}try {// 挨个获取对象属性值for (Field f : object.getClass().getDeclaredFields()) {f.setAccessible(true);// 如果有一个属性值不为null&#xff0…...

Vue3-44-Pinia- 安装步骤

介绍 本文介绍 在 vue3 中 安装 Pinia 的步骤 安装步骤 1、npm 安装 npm install pinia》 安装完成后可以看到 package.json 中添加了 pinia 的依赖信息 2、main.ts 中配置 // 引入 vue实例创建方法 import { createApp } from vue// 引入pinia import { createPinia } fro…...

L1-005 考试座位号(Java)

题目 每个 PAT 考生在参加考试时都会被分配两个座位号&#xff0c;一个是试机座位&#xff0c;一个是考试座位。正常情况下&#xff0c;考生在入场时先得到试机座位号码&#xff0c;入座进入试机状态后&#xff0c;系统会显示该考生的考试座位号码&#xff0c;考试时考生需要换…...

HDFS概述

文章目录 HDFS背景定义HDFS 优缺点HDFS 组成HDFS文件块大小 HDFS背景定义 背景 先给大家介绍一下什么叫HDFS&#xff0c;我们生活在信息爆炸的时代&#xff0c;随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系统管理的磁…...

Hive 的 安装与部署

目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby&#xff0c;开启 Hive 之后就会占用元数据库&#xff0c;且不与其他客户端共享数据&#xff0c;如果想多窗口操作…...

【HBase】——优化

1 RowKey设计 重要&#xff1a;一条数据的唯一标识就是 rowkey&#xff0c;那么这条数据存储于哪个分区&#xff0c;取决于 rowkey 处于 哪个一个预分区的区间内&#xff0c;设计 rowkey的主要目的 &#xff0c;就是让数据均匀的分布于所有的 region 中&#xff0c;在一定程度…...

什么是跨域以及怎么处理跨域问题

文章目录 什么是跨域&#xff1f;跨域问题常见场景怎么处理跨域1、配置代理2、CORS&#xff08;跨域资源共享&#xff09;3、JSONP&#xff08;仅限 GET 请求&#xff09;4、使用 WebSocket 注意事项&#xff1a; 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin&#x…...

【Linux Shell】11. 输入/输出 重定向

文章目录 【 1. 重定向简介 】【 2. 输出重定向 】【 3. 输入重定向 】【 4. Here Document 】【 5. /dev/null 文件 】 【 1. 重定向简介 】 大多数 UNIX 系统命令从终端接受输入并将所产生的输出发送回​​到原来输入的终端。一个命令通常从标准输入的地方读取输入&#xff…...

数据库-简单表的操作And查看表的结构

查看表的结构 desc 表名;mysql> use study; Database changed mysql> create table Class(class_id int ,class_name varchar(128),class_teachar varchar(64)) ; Query OK, 0 rows affected (0.06 sec) mysql> show tables; ----------------- | Tables_in_study…...

<设计模式修炼>模板方法模式的使用场景和注意事项学习

介绍 模板方法模式&#xff08;Template Method Pattern&#xff09;&#xff0c;又叫模板模式(Template Pattern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行。 2) 简单说&#xff…...

android 分享文件

1.在AndroidManifest.xml 中配置 FileProvider <providerandroid:name"android.support.v4.content.FileProvider"android:authorities"com.example.caliv.ffyy.fileProvider"android:exported"false"android:grantUriPermissions"true…...

UE5 C++(十一)— 碰撞检测

文章目录 代理绑定BeginOverlap和EndOverlapHit事件的代理绑定碰撞设置 代理绑定BeginOverlap和EndOverlap 首先&#xff0c;创建自定义ActorC类 MyCustomActor 添加碰撞组件 #include "Components/BoxComponent.h"public:UPROPERTY(VisibleAnywhere, BlueprintRea…...

时序数据库InfluxDB、TimeScaleDB简介

一、时序数据库作用、优点 1、作用&#xff1a; 时序数据库通常被用在监控场景&#xff0c;比如运维和 IOT&#xff08;物联网&#xff09;领域。这类数据库旨在存储时序数据并实时处理它们。 比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中…...

避坑指南:在CentOS 7.5上成功安装Ansys 19.2的完整流程(附字体问题终极解决方案)

CentOS 7.5与Ansys 19.2黄金组合&#xff1a;工业仿真环境搭建实战手册 在工程仿真领域&#xff0c;Ansys作为行业标准工具链的核心组件&#xff0c;其Linux环境部署一直是技术人员的痛点。经过长达三个月的多版本交叉测试&#xff0c;我们意外发现CentOS 7.5与Ansys 19.2的组合…...

【文件上传绕过】十六—十八:巧用文件幻数与内容伪装突破类型校验

1. 文件幻数&#xff1a;藏在二进制里的身份证 每次上传图片时&#xff0c;你有没有好奇过系统是怎么判断"这张图真的是JPG"的&#xff1f;这就像超市扫码器识别商品条形码一样&#xff0c;计算机其实是通过读取文件开头的几个特殊字节——我们称之为**幻数&#xff…...

云原生 Kubernetes 核心概念与组件详解

目录 一、Kubernetes 是什么&#xff1f; 核心功能概览 二、部署演进&#xff1a;从物理机到容器 1. 传统部署时代 2. 虚拟化部署时代 3. 容器部署时代 三、Kubernetes 集群架构 1. 控制平面组件&#xff08;集群大脑&#xff09; &#xff08;1&#xff09;kube-apise…...

Matlab实战:基于EGM2008模型与球谐函数解析全球重力梯度场

1. 地球重力场模型与EGM2008简介 地球重力场是描述地球质量分布的重要物理场&#xff0c;它影响着卫星轨道、海平面变化甚至我们日常使用的导航系统。想象一下&#xff0c;如果把地球比作一个表面凹凸不平的土豆&#xff0c;重力场就是描述这个"土豆"各处引力大小的地…...

Android 14 + Linux 6.1 平台 RTL8822CE Wi‑Fi 适配实战:从 PCI 已枚举到成功扫描热点

摘要 在 Android 14 Linux 6.1 的移植过程中&#xff0c;RTL8822CE Wi‑Fi 很容易出现一种“硬件已经被 PCI 枚举到&#xff0c;但系统就是没有 wlan0”的尴尬状态。本文复盘一次完整的 RTL8822CE 适配过程&#xff0c;最终定位出两个连续阻塞点&#xff1a;第一&#xff0c;目…...

5步快速搭建微信机器人:WeixinBot完整使用指南

5步快速搭建微信机器人&#xff1a;WeixinBot完整使用指南 【免费下载链接】WeixinBot 网页版微信API&#xff0c;包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 在当今自动化办公和智能交互的时代&#xff0c;拥有一个能够自动处…...

FanControl终极指南:如何5分钟掌控Windows电脑风扇噪音与散热

FanControl终极指南&#xff1a;如何5分钟掌控Windows电脑风扇噪音与散热 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...

对立统一的物理本质:黑洞视界动力学

粒子极微黑洞模型将对立统一规律从抽象的哲学辩证法还原为具体的物理动力学过程&#xff0c;其物理本体、动力学根源与几何载体正是全域嵌套的拓扑黑洞结构及其视界动力学。核心在于&#xff0c;黑洞视界本身就是一个天然的、动态的二元对立统一体。1. 对立统一&#xff1a;黑洞…...

运维实战:ESXi主机物理网卡闪断致部分VM网络中断的排查与应急恢复

1. 故障现象与初步判断 那天凌晨2点15分&#xff0c;值班手机突然响起刺耳的告警声。监控系统显示&#xff0c;ESXi主机上的三台关键业务虚拟机网络连接中断&#xff0c;而其他虚拟机却运行正常。这种部分VM断网的情况立刻引起了我的警觉——这通常意味着问题出在物理层而非虚拟…...

Keil C51开发避坑指南:用指针和_at_关键字精准操作RAM/ROM地址

Keil C51内存操作实战&#xff1a;指针与_at_关键字的深度解析与避坑策略 第一次接触Keil C51的存储空间管理时&#xff0c;我对着编译器的报错信息发呆了整整一个下午——为什么这段在标准C里运行良好的指针代码&#xff0c;在51单片机上却频繁引发硬件异常&#xff1f;直到亲…...