一、基础知识点

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()

注意:

  1. 可以用来删除目录或文件
  2. 删除非空目录会失败并且返回false
  3. 删除不存在的文件或目录会返回false
  4. 删除是直接从硬盘删除,并不会走回收站流程

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类的更多相关文章

  1. 孤荷凌寒自学python第二十九天python的datetime.time模块

     孤荷凌寒自学python第二十九天python的datetime.time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.time模块是专门用来表示纯时间部分的类. ...

  2. Java学习-043-获取文件在目录中的路径

    我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...

  3. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. “全栈2019”Java第二十八章:数组详解(上篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. “全栈2019”Java第二十五章:流程控制语句中循环语句while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第二十二章:控制流程语句中的决策语句if-else

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. liunx基本操作操作与文件和目录的管理

    一.基本操作 Tab键: 自动补全ctrl + u: 清空至行首ctrl + k: 清空至行尾 ctrl + l: 清屏 ctrl + c: 取消本次命令编辑重启:rebootsystemctl re ...

随机推荐

  1. Python 【绘制图及turtle库的使用】

    前言 最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,整理了一下,挑了一些觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~赶快去试一下吧) one ...

  2. Requests发Post请求data里面嵌套字典

    一.Post请求,data里面嵌套字典 Requests发Post请求,data里面嵌套字典的常见形式如下: info = { "appid": "123", ...

  3. oracle中plsql练习题-----编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号

    一.思路:首先输出需要变量接收,需要声明变量,于是考虑什么变量类型比较合适,在这我用的是table类型,最后,查询出来,循环输出即可. 二.具体实现 -- 编写一个PL/SQL块,输出所有员工的员工姓 ...

  4. Natas19 Writeup(Session登录,常见编码,暴力破解)

    Natas19: 提示,与上一题源码类似,只是PHPSESSID不连续.随便输入username和password,抓包观察PHPSESSID,发现是输入的信息,按照id-username的格式,由a ...

  5. Journal of Proteomics Research | 构建用于鉴定蓖麻毒素的串联质谱库

    文章题目:Constructing a Tandem Mass Spectral Library for Forensic Ricin Identification 构建用于鉴定蓖麻毒素的串联质谱库 ...

  6. Jenkinsfile里定义对象和函数,获取git提交人, 发送钉钉通知

    自从开始使用Jenkinsfile作为Jenkins配置后就一发不可收,因为开发者自定义CI脚本实在太方便了. 比如,最近开发的以一个项目涉及多人,提交冲突挺多的,有的人自己没编译通过就提交了,导致后 ...

  7. git 更换push 提交地址

    git 删除远程地址 1.找到对应项目 右键点击 GIT Bash Here 2.输入命令 git remote rm origin 3.对应项目 右键点击 GIT Sync..... 4.点击Man ...

  8. Java基础语法(1)-关键字与保留字

    title: Java基础语法(1)-关键字与保留字 blog: CSDN data: Java学习路线及视频 1.关键字 关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用 ...

  9. JAVA开发中如何优化类的设计

    具体类依赖于抽象类,而非抽象类依赖于具体类.这样做有利于一个抽象类扩展多个具体类. 开放封闭原则:对扩展开放,对修改封闭. 1.永远保持数据私有 保持数据的私有是设计类时,必须重点考虑的问题.保持私有 ...

  10. IO多路复用(IO Multiplexing)

    什么是IO多路复用 为什么要有IO多路复用 作者总结 遵循学习新知识的三部曲:是什么?为什么?怎么用? 作者前言:IO多路复用本质上是网络通信过程中的一个技术名词. 什么是IO多路复用 一个用机场管理 ...