当前位置: 首页 > 编程日记 > 正文

Java学习总结:41(文件操作类:File)

Java文件操作类:File

在java.io包中,如果要进行文件自身的操作(例如:创建、删除等),只能依靠java.io.File类完成。
File类的常用操作方法

No.方法类型描述
1public File(String pathname)构造传递完整文件操作路径
2public File(File parent,String child)构造设置父路径与子文件路径
3public boolean createNewFile() throws IOException普通创建新文件
4public boolean exists()普通判断给定路径是否存在
5public boolean delete()普通删除指定路径的文件
6public File getParentFile()普通取得当前路径的父路径
7public boolean mkdirs()普通创建多级目录
8public long length()普通取得文件大小,以字节为单位返回
9public boolean isFile()普通判断给定路径是否是文件
10public boolean isDirectory()普通判断给定路径是否有目录
11public long lastModified()普通取得文件的最后一次修改日期时间
12public String[] list()普通列出指定目录中的全部内容
13public File[] listFiles()普通列出所有的路径以File类对象包装

例:文件基本操作

Created with Raphaël 2.2.0开始实例化File类对象(设置完整路径)文件是否存在?exists()判断创建新文件结束使用delete()删除文件yesno
package Project.Study.FileClass;import java.io.File;public class Test1 {public static void main(String[]args) throws Exception {File file=new File("d:\\test.txt");//设置文件的路径if (file.exists()){	//如果存在的话返回“true”,否则就返回“false”file.delete();  //存在就将原文件删除}else{System.out.println(file.createNewFile());//不存在该文件就创建文件}}
}

关于路径分隔符
在Windows系统下,我们使用“\”(本质为“\”)作为了分隔符,但在Linux系统中,路径分隔符为“/”,这样就出现了一个问题,在不同操作系统下的路径分隔符不一样。因此,在java.io.File类里面提供有一个路径分隔符常量:public static final String separator,利用该常量可以在不同操作系统中自动转化为适合于该操作系统的路径分隔符。所以,在实际开发中,往往会使用如下形式的操作代码:

File file=new File("d:"+File.separator+"test.txt");//设置文件的路径

例:创建带路径的文件

Created with Raphaël 2.2.0开始实例化File类对象(设置完整路径)父路径是否存在?创建新文件结束创建父路径file.getParentFile.mkdirs();yesno
package Project.Study.FileClass;import java.io.File;public class Test2 {public static void main(String[] args) throws Exception {File file1 = new File("d:" + File.separator + "IDEA" + File.separator + "JAVA1" + File.separator + "src" + File.separator + "Project" + File.separator + "Study" + File.separator + "FileClass" + File.separator + "test.txt");File file2 = new File("d:" + File.separator + "IDEA" + File.separator + "JAVA1" + File.separator + "src" + File.separator + "Project" + File.separator + "Study" + File.separator + "FileClass" + File.separator + "1" + File.separator + "test.txt");if (!file1.getParentFile().exists()) {//现在父路径不存在file1.getParentFile().mkdirs();//直接创建父路径}System.out.println(file1.createNewFile());//创建新文件if (!file2.getParentFile().exists()) {file2.getParentFile().mkdirs();}System.out.println(file2.createNewFile());}
}

结果:
在这里插入图片描述
直接多出来一个名称为“1”的文件夹,证明上程序中的对象file2创建父路径成功了。

例:取得文件或目录的信息

package Project.Study.FileClass;import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;public class Test3 {public static void main(String[]args)throws Exception{File file=new File("d:"+File.separator+"my.jpg");//设置文件路径if (file.exists()){System.out.println("是否有文件:"+(file.isFile()));System.out.println("是否是目录:"+(file.isDirectory()));//文件大小是按照字节单位返回的数字,所以需要将字节转换为兆(M)的单元//但是考虑到小数点问题,所以使用BigDecimal处理System.out.println("文件大小:"+(new BigDecimal((double)file.length()/1024/1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP))+"M");//返回的日期是以long的形式返回,可以利用SimpleDateFormat进行格式化操作System.out.println("上次修改时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));}}
}
//结果:
//是否有文件:true
//是否是目录:false
//文件大小:0.10M
//上次修改时间:2020-04-13 10:58:09

例:列出目录信息

package Project.Study.FileClass;import java.io.File;public class Test4 {public static void main(String[]args){File file=new File("d:"+File.separator);if (file.isDirectory()){//判断当前路径是否为目录File[]result=file.listFiles();for (File x:result) {System.out.println(x);}}}
}
//结果:
//d:\$RECYCLE.BIN
//d:\blog
//d:\CSDN博客
//d:\Github_Daily code
//d:\Github_Holiday-repository
//d:\IDEA
//d:\Inno Setup 6
//d:\JAVA
//d:\JAVA_study
...

上程序列出了我D盘当前路径中的所有内容。

例:列出指定目录下的所有文件及子目录信息

Created with Raphaël 2.2.0开始实例化File类对象(设置完整路径)调用print()方法路径是否为目录?列出目录中的信息file.listFile()信息可以列出?循环File()数组输出File类对象(取得文件完整路径)结束yesnoyesno
package Project.Study.FileClass;import java.io.File;public class Test5 {public static void main(String[]args){File file=new File("d:"+File.separator);    //定义操作路径print(file);                                //列出目录}/*** 列出目录结构,此方法采用递归调用方式* @param file 要列出目录的路径*/public static void print(File file){if (file.isDirectory()){            //路径为目录File[]result=file.listFiles();  //列出子目录if (result!=null){              //目录可以列出for (File x:result) {                    print(x);               //递归调用}}}System.out.println(file);           //直接输出完整路径}
}
//结果:
//d:\vs2013\Common7\Tools\2052\vcupgradeui.dll
//d:\vs2013\Common7\Tools\2052
//d:\vs2013\Common7\Tools\errlook.exe
//d:\vs2013\Common7\Tools\errlook.hlp
//d:\vs2013\Common7\Tools\guidgen.exe
//d:\vs2013\Common7\Tools\makehm.exe
//d:\vs2013\Common7\Tools\ProjectComponents\Microsoft.Collections.Immutable.dll
//...

相关文章:

关于大型网站技术演进的思考(四)-存储的瓶颈4

如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。 数据库水平拆分简单说…

2022-2028年中国环卫行业产业链深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国环卫行业市场行业相关概述、中国环卫行业市场行业运行环境、分析了中国环卫行业市场行业的…

curl命令具体解释

对于windows用户假设用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来模拟,它已经自带了curl工具,安装后直接在cmd环境中用curl命令就可,由于路径已经自己主动给你配置好了。 linux …

如何修改配置以修复ThinkPad 小红帽滚轮失效?

本人使用ThinkPad X1 Carbon超级本,由于近期安装了遨游浏览器(Maxthon),发现其总体体验还是不错,但是在本机器上有个明显的Bug:就是小红帽的滚轮不管用。 由于就查了网上相关资料并加以试验,最终得以解决,方…

在虚幻引擎5中重塑火箭联盟——口袋联盟

流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小解压后:3.28 GB |时长:4h 21m 了解如何实现火箭联盟般的力学,并在短时间内创建最近的火箭…

Java学习总结:42(字节流和字符流)

字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容。如果要进行文件内容的操作,就必须依靠流的概念来完成。流在实际中分为输入流和输出流两种,输入流和输出流是一种相对的概…

用C#钩子写一个改键外挂

我的微信群——软件开发测试工程师交流群,欢迎扫码: 改键是一种习惯,比如在玩儿lol或者dota的时候。理论上玩儿什么游戏都可以改键。 做一个窗体(点击Install——应用改键,点击Uninstall——撤销应用)&…

Spring中WebApplicationContext

ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一 些,ApplicationContext则是“应用的容器”了:P,Spring把Bean放在这个容器中,在需要的时候,用getB…

洛谷 P1966 火柴排队

题意 给定2个等长序列a、b,要求通过交换使 \[\sum_{i1}^{n}(a_i-b_i)^2\] 最小。 分析 看着这个式子,我突然想到了方差。很明显,方差反应数据的波动程度,所以让数据集中就可以使方差变小了。而对应到这个公式,大方向就…

Revit结构2021-2022从零到精通

流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小解压后:8.6 GB 含课程文件 |时长:14h 46m 涵盖Revit结构2021-2022的基本、中级和高级功能 Revit Str…

BZOJ1922: [Sdoi2010]大陆争霸

题目:http://www.lydsy.com/JudgeOnline/problem.php?id1922 带限制最短路。 每个点真正的dis是max(dis[i],dis[v]),v是其保护点。 可以把题目中的保护转化为每个点的贡献。 每次扫一边连出的边做最短路把rd为0的点加入队列。 再扫一遍自己的贡献,更新它…

Java学习总结:43(转换流)

转换流 字节流和字符流的转换可以通过InputStreamReader、OutputStreamWriter两个类转换,下面是这两个类的继承结构和构造方法 名称定义构造构造方法InputStreamReaderpublic class InputStreamReader extends Readerpublic InputStreamReader(InputStream in)Out…

2022-2028年中国环保服务业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国环保服务行业市场行业相关概述、中国环保服务行业市场行业运行环境、分析了中国环保服务行…

一个build.xml实例

<?xml version"1.0"?> <project name"ssh" basedir"." default"usage"> <property name"name" value"ssh"/> <property name"war.dir" value"war"/> &l…

Spring Boot 2.0 常见问题总结(一)

SpringBoot2.x 依赖环境和版本新特性说明 依赖版本 jdk8 以上, Springboot2.x 用 JDK8 , 因为底层是 Spring framework5 。jar 包方式运行 SpringBoot 项目时问题 打包成jar包&#xff0c;需要增加maven依赖。 <build><plugins><plugin><groupId>org.s…

UE4场景设计学习教程

视频:MPEG4视频(H264) 19201080 25fps 1400kbps |音频:AAC 44100Hz立体声128kbps 语言&#xff1a;西班牙语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:35节课(6小时36分钟) 文件大小:4.7 GB 学会使用这个强大的软件的工具&#xff0c;一步一步地创造…

Java学习总结:44(文件复制案例)

案例&#xff1a;文件复制(针对InputStream和OutputStream的操作应用) 流程图(比较复杂我就不敲了&#xff0c;直接拍出来) 例&#xff1a;实现文件复制操作 package Project.Study.FileCopyCase;import java.io.*;public class Test {public static void main(String[]args…

java多态的理解

Java中多态性的实现 什么是多态 面向对象的三大特性&#xff1a;封装、继承、多态。从一定角度来看&#xff0c;封装和继承几乎都是为多态而准备的。这是我们最后一个概念&#xff0c;也是最重要的知识点。多态的定义&#xff1a;指允许不同类的对象对同一消息做出响应。即同一…

2022-2028年中国高密度聚乙烯(HDPE)行业市场发展调研及投资前景分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国高密度聚乙烯(HDPE)行业市场行业相关概述、中国高密度聚乙烯(HDPE)行业市场行业运行环境、…

计算机视觉图像处理机器学习压缩感知等论文代码大全

点击链接进入相关博文 1.来自西弗吉利亚大学li xin整理的CV代码合集 主要包括&#xff1a; 1.图像去噪&#xff0c;编码&#xff0c;去马赛克&#xff0c;超分辨&#xff0c;分割&#xff0c;去模糊&#xff0c;纹理合成&#xff0c;修复&#xff0c;质量评估等 2.视频编码和目…

Java 17 VS Java 8: 新旧对决,这些Java 17新特性你不容错过

Java是一门非常流行的编程语言,由于其跨平台性、可移植性以及强大的面向对象特性而备受青睐。Java最初由Sun Microsystems公司于1995年推出,随着时间的推移,Java发展迅速,版本不断更新。本篇博客将重点介绍Java 17与Java 8的对比,以及Java 17的新特性。

VirtualBox装ghost XP

在win7 professional 64上安装了virtualBox4.3.14 r95030 版本&#xff0c;之所以要安装这个vb,是因为刚升级的vm 打开之后很占用cpu&#xff0c; 网上又说vb不是很占用cpu而且是开源的&#xff0c; 于是就安装来试试&#xff0c; 但是以前没玩过&#xff0c; 哪知道安装个xp都…

【Java】常用的函数式接口(含示例)

Supplier接口被称为生产型接口:指定泛型是什么类型,接口的get()方法就会生产什么样的类型的数据。具体怎样消费、怎样使用这个数据呢?就由之后传入的Lambda表达式决定吧!与生产工厂Supplier相反,Consumer用来消费,即使用一个数据。具体生成一个怎样的数据?就由之后传入的Lambda表达式决定吧!转换的过程是怎样的呢?就由之后传入的Lambda表达式决定吧!具体根据什么判断呢?就由之后传入的Lambda表达式决定吧!对某种数据类型的数据进行判断,返回一个布尔值。

写实的CG人物角色制作学习教程

艺术站-制作欧比旺克诺比逼真的Cg角色 大小解压后&#xff1a;4.98G 含课程素材文件 1920X1080 .mp4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 信息: 欧比旺是我一直以来最喜欢的角色之一&#xff0c;所以有时间做这个3D人像真的很好…

Java学习总结:45(字符编码)

字符编码 在实际工作中最常见的4种编码如下&#xff1a; GBK、GB2312&#xff1a;中文的国标编码&#xff0c;其中GBK包含简体中文与繁体中文两种&#xff0c;而GB2312只包含简体中文&#xff1b; ISO8859-1&#xff1a;是国际编码&#xff0c;可以描述任何文字信息(中文需要转…

js实现双击后网页自己主动跑-------Day55

公司的界面设计环节总算是告一段落了&#xff0c;必需要承认的是&#xff0c;这段时间晚间的学习带给我非常多益处。在工作中偶尔的应用&#xff0c;效果出奇的好&#xff0c;收到领导和同事的一些小赞扬&#xff0c;表示非常欣慰&#xff0c;也长了点不少自信&#xff0c;尽管…

2022-2028年中国高等职业教育产业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国高等职业教育行业市场行业相关概述、中国高等职业教育行业市场行业运行环境、分析了中国高…

「轻松支付,只需几步」使用 LeanCloud 云代码接入支付宝示例

如果你的应用想接入支付宝&#xff0c;让用户可以在应用内部直接支付&#xff0c;你可以看下这篇文档和开源项目&#xff0c;也许会给你带来一些帮助。 项目&#xff1a;https://github.com/leancloud/cloud-code-alipay 了解支付宝「即时到账收款」 在尝试该项目之前&#xff…

quartz定时任务开发cron常用网站

http://cron.qqe2.com/ cron表达式 只能看下5个时点http://www.cronmaker.com/ 能看500个时点https://unixtime.51240.com/unix时间戳 quartz定时任务开发常常需要用到一些工具。 如cron表达式的构造&#xff0c;绝对时间&#xff0c;时间戳的定位&#xff0c;单调的时候要看…

UE5使用MetaHuman构建超现实的角色

使用免费的MetaHuman创造者应用程序为虚幻构建超现实的角色。 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:1.66 GB 含课程文件|时长:1h 49…