Java第二十九天,文件及目录的管理,File类
一、基础知识点
1.路径分隔符
(1)什么是路径分隔符?
这个多被应用在环境变量设置当中,例如当我设置Path环境变量时,多个环境变量的路径要用 ';'(Windows系统用封号分隔)或 ':'(Linux系统用冒号隔开)
(2)如何获取当前系统的路径分隔符
File.pathSeparator
File.pathSeparatorChar
//pathSeparator是静态方法,所以可以直接使用类名调用
2.文件名称分隔符
(1)什么是文件名称分隔符?
当我们找一个文件时,通常需要得到该文件的文件路径(用过Linux系统的人对这个感触颇深),路径当中有两个元素,一个是文件夹名,另一个是分隔符,这个分隔符就是文件名称分隔符
(2)如何获取当前系统的文件名称分隔符
File.separator
File.separatorChar;
//separator是静态方法,所以可以直接使用类名调用
3.绝对路径和相对路径
(1)相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系
(2)绝对路径:完整的描述文件位置的路径
二、使用教程
1.构造方法
File(File parent, String child) ===> 从父抽象路径名和子路径名字符串创建新的File实例
File(String pathname) ===> 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File(String parent, String child) ===> 从父路径名字符串和子路径名字符串创建新的File实例
File(URI uri) ===> 通过将给定的 file: URI转换为抽象路径名来创建新的File实例
import java.io.File;
public class Two {
public static void main(String[] args) {
File file = new File("F:\\");
String child = new String("a.txt");
File file1 = new File(file,child);
System.out.println(file1);
String parent = new String("F:\\");
child = "b.txt";
File file2 = new File(parent,child);
System.out.println(file2);
String path = new String("F:\\c.txt");
File file3 = new File(path);
System.out.println(file3);
}
}
2.常用方法
File getAbsoluteFile() ===> 得到指定文件的规范File类对象
String getAbsolutePath() ===> 得到指定文件的绝对路径
String getPath ===> 得到指定文件的绝对或相对路径(根据File类对象类型决定)
String getName() ===> 返回文件或目录的名称
long length() ===> 返回文件的大小(以字节为单位,且目录没有该属性)
boolean isDirectory() ===> 判断该对象是否为目录
boolean isFile() ===> 判断该对象是否为普通文件
boolean exists() ===> 判断该文件或目录是否存在
import java.io.File;
public class Two {
public static void main(String[] args) {
File file = new File("F:\\lanYue\\a.txt");
File fileTemp = new File("b.txt");
System.out.println(file.getAbsolutePath());
System.out.println(fileTemp.getAbsolutePath());
System.out.println(file.getPath());
System.out.println(fileTemp.getPath());
System.out.println(file.getName());
System.out.println(fileTemp.getName());
System.out.println(file.length());
System.out.println(fileTemp.length());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.exists());
}
}

3.处理文件、目录
(1)创建文件
booleancreatelewFile() ===> 当且仅当该文件不存在时,创建新的空文件
static FilecreateTempFile(String prefix,String suffix) ===> 使用给定的前缀和后缀在默认临时目录中创建一个新的空文件
static FilecreateTempFile(String prefix,String suffix,File directory) ===>使用给定的前缀和后缀在指定的目录中创建新的空文件
(2)创建目录
boolean mkdir() ===> 创建由此抽象路径名命名的目录
boolean mkdirs() ===> 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
public class Three {
public static void main(String[] args) {
File directory = new File("F:\\myData\\");
File document = new File("info.txt");
if(!directory.exists()){
if(!directory.isDirectory()){
directory.mkdirs();
if(!(new File(directory,document.getName()).exists())){
try {
new File(directory,document.getName()).createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}

注意:无论创建文件还是目录,其指定方法已经带有相关的检测与判断功能(如果存在,则返回false,且不执行创建操作。反之......),这里引用其他功能知识为了熟悉常用的文件操作方法
(3)删除
boolean delete()
注意:
- 可以用来删除目录或文件
- 删除非空目录会失败并且返回false
- 删除不存在的文件或目录会返回false
- 删除是直接从硬盘删除,并不会走回收站流程
void delete0nExit() ===> 程序运行deleteOnExit成功后,File并没有直接删除,而是在虚拟机正常运行结束后才会删除
public class Three {
public static void main(String[] args) {
File directory = new File("F:\\myData\\");
File document = new File("info.txt");
if(!directory.exists()){
if(!directory.isDirectory()){
directory.mkdirs();
if(!(new File(directory,document.getName()).exists())){
try {
new File(directory,document.getName()).createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
System.out.println(new File(directory,document.getName()).delete());
}

4.遍历
String[] list() ===> 返回一个字符串数组,遍历目录中的文件和目录
File[] listFiles() ===> 返回一个File类数组,遍历目录中的文件
import java.io.File;
import java.io.IOException;
public class All {
public static void main(String[] args) {
createFiles();
showFiles();
showFilesStruct(new File("F:\\"));
delete();
}
private static void createFiles(){
File directory = new File("F:\\");
String file;
for (int i = 100; i <= 200; i++) {
try {
file = String.valueOf(i) + ".txt";
new File(directory,file).createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void showFiles(){
File directory = new File("F:\\");
File[] files = directory.listFiles();
for (File file : files) {
System.out.println(file);
}
}
private static void showFilesStruct(File directory){
File[] files = directory.listFiles();
if(files != null){
System.out.println("非空目录:" + directory.getName());
for (File file : files) {
if(file.isDirectory()){
showFilesStruct(file);
}else{
System.out.println("文件:" + file.getAbsoluteFile());
}
}
}else{
System.out.println("空目录:" + directory.getName());
}
}
private static void delete(){
File directory = new File("F:\\");
File[] files = directory.listFiles();
for (File file : files) {
file.delete();
}
}
}
5.修改文件/目录名
boolean renameTo(File dest) ===> 重命名由此抽象路径名表示的文件
注意:
1.重命名成功会返回true,失败会返回false
2.重命名一定程度上可以起到移动的功能
3.移动时,只能把目标文件或目录移动到已存在目录下,否则会失败
import java.io.File;
import java.io.IOException;
public class ReName {
public static void main(String[] args) {
File oldFile = new File("F:\\old.txt");
try {
oldFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
File newFile = new File("F:\\new.txt");
System.out.println(oldFile.renameTo(newFile));
}
}
Java第二十九天,文件及目录的管理,File类的更多相关文章
- 孤荷凌寒自学python第二十九天python的datetime.time模块
孤荷凌寒自学python第二十九天python的datetime.time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.time模块是专门用来表示纯时间部分的类. ...
- Java学习-043-获取文件在目录中的路径
我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...
- “全栈2019”Java第二十九章:数组详解(中篇)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十八章:数组详解(上篇)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十六章:流程控制语句中循环语句do-while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十五章:流程控制语句中循环语句while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十二章:控制流程语句中的决策语句if-else
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- liunx基本操作操作与文件和目录的管理
一.基本操作 Tab键: 自动补全ctrl + u: 清空至行首ctrl + k: 清空至行尾 ctrl + l: 清屏 ctrl + c: 取消本次命令编辑重启:rebootsystemctl re ...
随机推荐
- gitbook 入门教程之超高颜值的思维导图simple-mind-map插件
欢迎访问 gitbook-plugin-simple-mind-map 官网
- 【Win10】我们无法更新系统保留的分区
前言 笔者是一个萌新,这个方案也是慢慢摸索出来的,有更好的方案欢迎大家提出 前段时间用公司电脑发现win10新版本还行,回家升级自己的电脑却提示“我们无法更新系统保留的分区”.(O_o)?? 笔者 ...
- python pip 更新失败问题
通过PIP 安装第三方库的时候出现 pip程序版本过旧,用’python -m pip install --upgrade pip‘安装’提示仍然如下 可以用管理员身份运行windows shell ...
- vs2017 dlib19.3 opencv3.41 C++ 环境配置 人脸特征点识别
身为一个.net程序员经过两天的采坑终于把人脸特征检测的项目跑通了,然后本文将以dlib项目中人脸特征检测工程为例,讲解dlib与opencv 在vs2017 C++ 项目中的编译与运行路径配置. 1 ...
- Lambda表达式学习笔记
Lambda基础语法 Java8中引入了一个新的操作符" -> ",该操作符被称为箭头操作符或Lambda操作符,箭头操作符将Lambda表达式拆分成两部分: 左侧:Lamb ...
- 使用Servlet和JSp在浏览器上实现对数据库表的增删改查(新手)
第一步:用户输入网址进入一个登陆界面. 里面要有账号密码输入. 登陆界面链接到登陆的Servlet类中. Servlet类 --> 1.接收参数(账户密码) 2.调用DAO层的 SQL语句 验 ...
- java-根据用户输入的成绩来判断等级(新手)
//创建的一个包名. package qige; //导入的一个包.import java.util.Scanner; //定义一个类.public class Zy2 { //公共静态的主方法. p ...
- BeanShell断言:根据响应的2个数据的比较结果来决定断言
需求:目前有一个请求,请求的响应中有2个值,aaa和bbb,我们比较aaa和bbb,如果aaa大于bbb,则断言通过,否则失败. 1.添加一个Dummy Sampler,模拟请求. 2.添加2个正则表 ...
- 当程序执行一条查询语句时,MySQL内部到底发生了什么? (说一下 MySQL 执行一条查询语句的内部执行过程?
先来个最基本的总结阐述,希望各位小伙伴认真的读一下,哈哈: 1)客户端(运行程序)先通过连接器连接到MySql服务器. 2)连接器通过数据库权限身份验证后,会先查询数据库缓存是否存在(之前执行过相同条 ...
- python+selenium之悠悠博客学习笔记
1 Python之自动化测试框架selenium学习 offical website 悠悠之selenium浅谈·博客园 悠悠软件测试系列 1.1 基础环境准备 1.1.1 python包下载工具的安 ...
