IO流篇(一、File)

目录

一、学习前言

二、文件简介

三、文件使用

1. 绝对路径 vs 相对路径

2. 路径分隔符

3. 属性(字段)

4. 构造方法

5. 常用方法

5.1. 获取文件的相关信息

5.2. 判断功能

5.3. 新建和删除

5.4. 文件的获取

5.5. 重命名文件

四、文件使用练习

1. 学会创建File对象定位操作系统的文件

2. File类的获取功能的API

3. File类的创建和删除的方法

4. File针对目录的遍历

5. 去D盘判断搜索某个文件

6. 删除非空文件夹

五、封装成一个工具类


一、学习前言

之前,如果我们想要存储一些数据就是利用数组和集合容器进行存储数据,

但是这些数据都是存储于内存中,如果程序退出或断电,数据也就会随之消失,无法永久保存数据!

所以,我们要想将数据持久化,利用文件存储就是一种很好的选择,

磁盘中数据的形式就是文件,文件是数据的载体,所以,可以通过文件将数据持久化到磁盘中,永久存储数据

数据持久化

数据持久化就是指将内存中的瞬时数据保存到存储设备中,保证在电脑或手机在关闭状态,数据也不会丢失。

例如:

数据持久化到磁盘文件、XML数据文件、数据库中等

像我们以前数组或集合存储的数据其实都是瞬时数据。

什么是瞬时数据?

瞬时数据就是指那些存储在内存当中,有可能会因为程序关闭或其他原因导致内存中的数据丢失。

二、文件简介

File类是文件和目录路径名的抽象表示形式,主要用于文件和目录的创建、查找和删除等操作。

即Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件或者目录只

要创建File这个类即可。

不过要注意的是File类只是对文件的操作类,只能对文件本身进行操作,不能对文件内容进行操作。

三、文件使用

1. 绝对路径 vs 相对路径

  1. 绝对路径:是一个固定的路径,从盘符开始
  2. 相对路径:是相对于某个位置开始
    • main()方法中的相对路径是相对于当前工程
    • 单元测试方法中的相对路径是相对于当前模块

2. 路径分隔符

  1. 路径中的每级目录之间用一个路径分隔符隔开
  2. 路径分隔符和系统有关
    • windows 和 DOS 系统默认使用""来表示
    • UNIX和URL使用"/"来表示
  1. Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个隐患,File类提供了一个常量: public static final String separator:根据操作系统,动态的提供分隔符。
        File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");File file3 = new File("F:\\wclass\\06Network\\resource\\txt");

代码封装到FileUtil工具类的PathSeparator方法:

    public static void PathSeparator() {System.out.println("------------------------------------PathSeparator------------------------------------");File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");File file3 = new File("F:\\wclass\\06Network\\resource\\txt");}

3. 属性(字段)

从上图的API可以发现File中包括两种分隔符,路径分隔符和名称分隔符,而且分别还有两种形式Char型和

String型。

其中 File.pathSeparator 指的是分隔连续多个路径字符串的分隔符。

在UNIX系统上,这个字符是’:’ ; 在Microsoft Windows系统上是’;’ 。

File.separator 指的是用来分隔同一个路径字符串中的目录的分隔符。

在UNIX系统上,该字段的值为’/’; 在Microsoft Windows系统上是’\’ 。

我们都知道由于不同的操作系统之间会导致分隔符的不同,所以使用它们的作用主要就是屏蔽各个平台之间的

分隔符差异。

        //在Windows系统下输出System.out.println(File.pathSeparator);// 输出;System.out.println(File.separator);// 输出 \
        //简单测试一下,调用的方法后面会讲File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");//这里两个\\是Java中的转义字符File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");System.out.println(file1.getAbsolutePath());System.out.println(file2.getAbsolutePath());

代码封装到FileUtil工具类的Attribute方法:

    public static void Attribute(){System.out.println("------------------------------------Attribute------------------------------------");//在Windows系统下输出System.out.println(File.pathSeparator);// 输出;System.out.println(File.separator);// 输出 \//简单测试一下,调用的方法后面会讲File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");//这里两个\\是Java中的转义字符File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");System.out.println(file1.getAbsolutePath());System.out.println(file2.getAbsolutePath());}

输出的结果:

4. 构造方法

上图的构造方法使用举例如下:

    public static void constructorMethod() {System.out.println("------------------------------------ConstructorMethod------------------------------------");//File(String parent, String child)//从父路径名字符串和子路径名字符串创建新的File实例。File f1 = new File("F:", "\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println(f1); //输出 F:\wclass\06Network\resource\txt\hello.txt//File(String pathname)//通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。//不用Java分隔符File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");//使用Java分隔符File f3 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "hello.txt");System.out.println(f2); //输出 F:\wclass\06Network\resource\txt\hello.txtSystem.out.println(f3); //输出 F:\wclass\06Network\resource\txt\hello.txt//File(File parent, String child)//从父抽象路径名和子路径名字符串创建新的 File实例。File f4 = new File("F:");File f5 = new File(f4, "\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println(f5); //输出 D:\IO\hello.txt}

注意:

  1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
  2. 无论该路径下是否存在文件或者目录,都不影响File对象的创建。

输出结果:

5. 常用方法

5.1. 获取文件的相关信息

  • String getAbsolutePath() :获取绝对路径名字符串。
  • String getName():获取文件或目录的名称。
  • String getPath():获取路径名字符串。
  • String getParent() :获取路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
  • Long lastModified():获取最后一次修改的时间(返回毫秒)。
  • Long length():获取文件的长度,如果表示目录则返回值未指定。

以上方法测试的代码如下【测试以自己的电脑文件夹为准】:

    /*** 获取文件的相关信息*/public static void getFileInformation() {System.out.println("------------------------------------CommonMethod01:Obtain relevant information about the file------------------------------------");System.out.println("------------------------------------常用方法:获取文件的相关信息------------------------------------");//路径带文件File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println("文件绝对路径:" + f1.getAbsolutePath());System.out.println("文件名称:" + f1.getName());System.out.println("文件路径(字符串):" + f1.getPath());System.out.println("文件父路径:" + f1.getParent());System.out.println("文件最后修改时间(ms):" + f1.lastModified());System.out.println("文件长度:" + f1.length());System.out.println("------------");//路径不带文件,纯目录File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\");System.out.println("目录绝对路径:" + f2.getAbsolutePath());System.out.println("目录名称:" + f2.getName());System.out.println("目录路径(字符串):" + f2.getPath());System.out.println("目录父路径:" + f2.getParent());System.out.println("目录最后修改时间(ms):" + f2.lastModified());System.out.println("目录长度:" + f2.length());}

运行结果:

注意:绝对路径和相对路径的区别

  • 绝对路径:是一个完整的路径,以盘符开头,例如 F:\wclass\06Network\resource\txt\hello.txt。
  • 相对路径:是相较于当前路径,不以盘符开头,例如 \hello.txt。

5.2. 判断功能

  • Boolean isDirectory():判断此路径是否为一个目录
  • Boolean isFile():判断是否为一个文件
  • Boolean exists():判断文件或目录是否存在
  • Boolean canExecute():判断文件是否可执行
  • Boolean canRead():判断文件是否可读
  • Boolean canWrite():判断文件是否可写
  • Boolean isHidden():判断是否为隐藏文件

以上方法测试的代码如下:

    /*** 判断功能*/public static void judgingFunction() {System.out.println("------------------------------------CommonMethod02:judging function------------------------------------");System.out.println("------------------------------------常用方法:判断功能------------------------------------");File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");//路径带文件System.out.println("是否为目录:"+f1.isDirectory());System.out.println("是否为文件"+f1.isFile());System.out.println("是否存在"+f1.exists());System.out.println("是否可执行"+f1.canExecute());System.out.println("是否可读"+f1.canRead());System.out.println("是否可写"+f1.canWrite());System.out.println("是否隐藏"+f1.isHidden());System.out.println("------------");File f2 = new File("F:\\wclass\\06Network\\resource\\txt");//路径不带文件,纯目录System.out.println("是否为目录:"+f2.isDirectory());System.out.println("是否为文件"+f2.isFile());System.out.println("是否存在"+f2.exists());System.out.println("是否可执行"+f2.canExecute());System.out.println("是否可读"+f2.canRead());System.out.println("是否可写"+f2.canWrite());System.out.println("是否隐藏"+f2.isHidden());}

运行结果:

5.3. 新建和删除

  • Boolean createNewFile():创建文件,如果文件存在则不创建,返回false,反之返回true。
  • Boolean mkdir():创建文件目录。如果此文件目录存在则不创建,如果此文件目录的上层目录不存在也不创建。
  • Boolean mkdirs(): 创建文件目录。如果上层文件目录不存在也会创建。
  • Boolean delete():删除的文件或目录。如果目录下有文件或目录则不会删除。

以上方法测试的代码如下:

    /*** 新建和删除* @throws IOException*/public static void newAndDelete() throws IOException {System.out.println("------------------------------------CommonMethod03:New and Delete------------------------------------");System.out.println("------------------------------------常用方法:新建和删除------------------------------------");//创建文件File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hi.txt");if (!f1.exists()) {f1.createNewFile();System.out.println("创建成功...");}else{System.out.println("创建失败...");}//mkdir创建文件目录,目标目录不存在,上层目录存在File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\IO01");boolean mkdir = f2.mkdir();if (mkdir){System.out.println("创建目录成功...");}else{System.out.println("创建目录失败...");}//mkdirs创建文件目录,上层目录不存在存在File f3 = new File("F:\\wclass\\06Network\\resource\\txt\\txt01");boolean mkdirs = f3.mkdirs();if (mkdirs){System.out.println("创建目录成功...");}else{System.out.println("创建目录失败...");}//删除文件或目录/*boolean delete = f1.delete();System.out.println(delete);boolean delete1 = f2.delete();System.out.println(delete1);boolean delete2 = f3.delete();System.out.println(delete2);*/}

运行结果:

5.4. 文件的获取

  • String[] list():返回一个字符串数组,获取指定目录下的所有文件或者目录名称的数组。
  • File[] listFiles():返回一个抽象路径名数组,获取指定目录下的所有文件或者目录的File数组。

以上方法测试的代码如下:为了方便测试我在IO目录下添加了其他目录。

    /*** 文件的获取* @throws IOException*/public static void filesAcquisition() throws IOException {System.out.println("------------------------------------CommonMethod04:Acquisition of files------------------------------------");System.out.println("------------------------------------常用方法:文件的获取------------------------------------");File file = new File("F:\\wclass\\06Network\\resource\\txt\\");//list()方法String[] list = file.list();for (String s : list) {System.out.println(s);}System.out.println("----------");//listFiles()方法File[] files = file.listFiles();for (File f : files) {System.out.println(f.toString());}}

运行结果:

5.5. 重命名文件

  • Boolean renameTo(File dest):把文件重命名到指定路径。

注意:要使用这个方法其原文件(即TXT文件或其它文件)一定要存在,而且指定路径不能存在与重命名名字

相同的文件,否则永远返回false。

    /*** 重命名文件* @throws IOException*/public static void renameFile() throws IOException {System.out.println("------------------------------------CommonMethod05:rename file------------------------------------");System.out.println("------------------------------------常用方法:重命名文件------------------------------------");File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\inf.txt");File file2 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");boolean renameTo = file1.renameTo(file2);System.out.println(renameTo);}

运行结果:

四、文件使用练习

1. 学会创建File对象定位操作系统的文件

    public static void positionFile() throws IOException {System.out.println("------------------------------------FileUseExercise01------------------------------------");System.out.println("------------------------------------文件使用练习:学会创建File对象定位操作系统的文件------------------------------------");// 1、创建File对象(指定了文件的路径)// 路径写法: F:\resources\wclass.jpeg//          F:/resources/wclass.jpeg//          File.separator// File f = new File("F:\\resources\\xueshan.jpeg");// File f = new File("F:/resources/xueshan.jpeg");File f = new File("D:" + File.separator+"resources"+ File.separator +"wclass.jpeg");long size = f.length(); // 是文件的字节大小System.out.println(size);// 2、File创建对象,支持绝对路径 支持相对路径(重点)File f1 = new File("D:\\resources\\beauty.jpeg"); // 绝对路径System.out.println(f1.length());// 相对路径:一般定位模块中的文件的。 相对到工程下!!File f2 = new File("src/data.txt");System.out.println(f2.length());// 3、File创建对象 ,可以是文件也可以是文件夹File f3 = new File("D:\\resources");System.out.println(f3.exists()); // 判断这个路径是否存在,这个文件夹存在否}

2. File类的获取功能的API

方法

描述

public String getAbsolutePath()

返回此File的绝对路径名字符串

public String getPath()

获取创建文件对象的时候用的路径

public String getName()

返回由此File表示的文件或目录的名称

public long length()

返回由此File表示的文件的长度

    public static void getFunctionsAPI() throws IOException {System.out.println("------------------------------------FileUseExercise02------------------------------------");System.out.println("------------------------------------文件使用练习:File类的获取功能的API------------------------------------");// 1.绝对路径创建一个文件对象File f1 = new File("F:/wclass/06Network/resource/wclass.jpeg");// a.获取它的绝对路径。System.out.println(f1.getAbsolutePath());// b.获取文件定义的时候使用的路径。System.out.println(f1.getPath());// c.获取文件的名称:带后缀。System.out.println(f1.getName());// d.获取文件的大小:字节个数。System.out.println(f1.length()); // 字节大小// e.获取文件的最后修改时间long time = f1.lastModified();System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));// f、判断文件是文件还是文件夹System.out.println(f1.isFile()); // trueSystem.out.println(f1.isDirectory()); // falseSystem.out.println("-------------------------");File f2 = new File("File\\src\\data.txt");// a.获取它的绝对路径。System.out.println(f2.getAbsolutePath());// b.获取文件定义的时候使用的路径。System.out.println(f2.getPath());// c.获取文件的名称:带后缀。System.out.println(f2.getName());// d.获取文件的大小:字节个数。System.out.println(f2.length()); // 字节大小// e.获取文件的最后修改时间long time1 = f2.lastModified();System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time1));// f、判断文件是文件还是文件夹System.out.println(f2.isFile()); // trueSystem.out.println(f2.isDirectory()); // falseSystem.out.println(f2.exists()); // trueFile file = new File("D:/");System.out.println(file.isFile()); // falseSystem.out.println(file.isDirectory()); // trueSystem.out.println(file.exists()); // trueFile file1 = new File("D:/aaa");System.out.println(file1.isFile()); // falseSystem.out.println(file1.isDirectory()); // falseSystem.out.println(file1.exists()); // false}

3. File类的创建和删除的方法

方法

描述

public boolean createNewFile();

当且仅当具有该名称的文件尚不存在时, 创建一个新的空文件。 (几乎不用的,因为以后文件都是自动创建的!)

public boolean delete();

删除由此File表示的文件或目录。 (只能删除空目录)

public boolean mkdir();

创建由此File表示的目录。(只能创建一级目录)

public boolean mkdirs();

可以创建多级目录(建议使用的)

    public static void FileCreateAndDelete() throws IOException {System.out.println("------------------------------------FileUseExercise03------------------------------------");System.out.println("------------------------------------文件使用练习:File类的创建和删除的方法------------------------------------");File f = new File("file-io-app\\src\\data.txt");// a.创建新文件,创建成功返回true ,反之 ,不需要这个,以后文件写出去的时候都会自动创建System.out.println(f.createNewFile());File f1 = new File("file-io-app\\src\\data02.txt");System.out.println(f1.createNewFile()); // (几乎不用的,因为以后文件都是自动创建的!)// b.mkdir创建一级目录File f2 = new File("D:/resources/aaa");System.out.println(f2.mkdir());// c.mkdirs创建多级目录(重点)File f3 = new File("D:/resources/ccc/ddd/eee/ffff");// System.out.println(f3.mkdir());System.out.println(f3.mkdirs()); // 支持多级创建// d.删除文件或者空文件夹System.out.println(f1.delete());File f4 = new File("D:/resources/wclass.jpeg");System.out.println(f4.delete()); // 占用一样可以删除// 只能删除空文件夹,不能删除非空文件夹.File f5 = new File("D:/resources/aaa");System.out.println(f5.delete());}

4. File针对目录的遍历

方法

描述

public String[] list();

获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回

public File[] listFiles();

获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回

/*** File针对目录的遍历* @throws IOException*/public static void traversingDirectories() throws IOException {System.out.println("------------------------------------FileUseExercise04------------------------------------");System.out.println("------------------------------------文件使用练习:File针对目录的遍历------------------------------------");// 1、定位一个目录File f1 = new File("F:/wclass/06Network/resource");String[] names = f1.list();for (String name : names) {System.out.println(name);}// 2.一级文件对象// 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)File[] files = f1.listFiles();for (File f : files) {System.out.println(f.getAbsolutePath());}// 注意事项File dir = new File("/wclass/06Network/resource/txt");File[] files1 = dir.listFiles();System.out.println(Arrays.toString(files1));}

5. 去D盘判断搜索某个文件

    /*** 去D盘判断搜索某个文件* @param dir* @param fileName* @throws IOException*/public static void searchFile(File dir,String fileName) throws IOException {System.out.println("------------------------------------FileUseExercise05------------------------------------");System.out.println("------------------------------------文件使用练习:去D盘判断搜索某个文件------------------------------------");// 3、判断dir是否是目录if(dir != null && dir.isDirectory()){// 可以找了// 4、提取当前目录下的一级文件对象File[] files = dir.listFiles(); // null  []// 5、判断是否存在一级文件对象,存在才可以遍历if(files != null && files.length > 0) {for (File file : files) {// 6、判断当前遍历的一级文件对象是文件 还是 目录if(file.isFile()){// 7、是不是咱们要找的,是把其路径输出即可if(file.getName().contains(fileName)){System.out.println("找到了:" + file.getAbsolutePath());// 启动它。try {Runtime r = Runtime.getRuntime();r.exec(file.getAbsolutePath());} catch (IOException e) {e.printStackTrace();}}}else {// 8、是文件夹,需要继续递归寻找searchFile(file, fileName);}}}}else {System.out.println("对不起,当前搜索的位置不是文件夹!");}}

6. 删除非空文件夹

    /*** 删除文件夹,无所谓里面是否有内容,都可以删除* @param dir* @throws IOException*/public static void deleteDir(File dir) throws IOException {System.out.println("------------------------------------FileUseExercise06------------------------------------");System.out.println("------------------------------------文件使用练习:删除非空文件夹------------------------------------");// 1、判断dir存在且是文件夹if(dir != null && dir.exists() && dir.isDirectory()){// 2、提取一级文件对象。File[] files = dir.listFiles();// 3、判断是否存在一级文件对象,存在则遍历全部的一级文件对象去删除if(files != null && files.length > 0){// 里面有内容for (File file : files) {// 4、判断file是文件还是文件夹,文件直接删除if(file.isFile()){file.delete();}else {// 递归删除deleteDir(file);}}}// 删除自己dir.delete();}}

五、封装成一个工具类

将以上流程封装到一个工具类 FileUti l中

package com.wclass.file;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;/*** @projectName: File* @ClassName FilteUtil* @description:* @author: W哥* @create: 2024.11.04.10:38* @Version 1.0**/
public class FileUtil {/*** 路径分隔符*/public static void pathSeparator() {System.out.println("------------------------------------PathSeparator------------------------------------");File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");File file3 = new File("F:\\wclass\\06Network\\resource\\txt");}/*** 属性(字段)*/public static void attribute() {System.out.println("------------------------------------Attribute------------------------------------");//在Windows系统下输出System.out.println(File.pathSeparator);// 输出;System.out.println(File.separator);// 输出 \//简单测试一下,调用的方法后面会讲File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\info.txt");//这里两个\\是Java中的转义字符File file2 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "info.txt");System.out.println(file1.getAbsolutePath());System.out.println(file2.getAbsolutePath());}/*** 构造方法*/public static void constructorMethod() {System.out.println("------------------------------------ConstructorMethod------------------------------------");//File(String parent, String child)//从父路径名字符串和子路径名字符串创建新的File实例。File f1 = new File("F:", "\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println(f1); //输出 F:\wclass\06Network\resource\txt\hello.txt//File(String pathname)//通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。//不用Java分隔符File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");//使用Java分隔符File f3 = new File("F:" + File.separator + "wclass" + File.separator + "06Network" + File.separator + "resource" + File.separator + "txt" + File.separator + "hello.txt");System.out.println(f2); //输出 F:\wclass\06Network\resource\txt\hello.txtSystem.out.println(f3); //输出 F:\wclass\06Network\resource\txt\hello.txt//File(File parent, String child)//从父抽象路径名和子路径名字符串创建新的 File实例。File f4 = new File("F:");File f5 = new File(f4, "\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println(f5); //输出 D:\IO\hello.txt}/*** 获取文件的相关信息*/public static void getFileInformation() {System.out.println("------------------------------------CommonMethod01:Obtain relevant information about the file------------------------------------");System.out.println("------------------------------------常用方法:获取文件的相关信息------------------------------------");//路径带文件File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");System.out.println("文件绝对路径:" + f1.getAbsolutePath());System.out.println("文件名称:" + f1.getName());System.out.println("文件路径(字符串):" + f1.getPath());System.out.println("文件父路径:" + f1.getParent());System.out.println("文件最后修改时间(ms):" + f1.lastModified());System.out.println("文件长度:" + f1.length());System.out.println("------------");//路径不带文件,纯目录File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\");System.out.println("目录绝对路径:" + f2.getAbsolutePath());System.out.println("目录名称:" + f2.getName());System.out.println("目录路径(字符串):" + f2.getPath());System.out.println("目录父路径:" + f2.getParent());System.out.println("目录最后修改时间(ms):" + f2.lastModified());System.out.println("目录长度:" + f2.length());}/*** 判断功能*/public static void judgingFunction() {System.out.println("------------------------------------CommonMethod02:judging function------------------------------------");System.out.println("------------------------------------常用方法:判断功能------------------------------------");File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");//路径带文件System.out.println("是否为目录:"+f1.isDirectory());System.out.println("是否为文件"+f1.isFile());System.out.println("是否存在"+f1.exists());System.out.println("是否可执行"+f1.canExecute());System.out.println("是否可读"+f1.canRead());System.out.println("是否可写"+f1.canWrite());System.out.println("是否隐藏"+f1.isHidden());System.out.println("------------");File f2 = new File("F:\\wclass\\06Network\\resource\\txt");//路径不带文件,纯目录System.out.println("是否为目录:"+f2.isDirectory());System.out.println("是否为文件"+f2.isFile());System.out.println("是否存在"+f2.exists());System.out.println("是否可执行"+f2.canExecute());System.out.println("是否可读"+f2.canRead());System.out.println("是否可写"+f2.canWrite());System.out.println("是否隐藏"+f2.isHidden());}/*** 新建和删除* @throws IOException*/public static void newAndDelete() throws IOException {System.out.println("------------------------------------CommonMethod03:New and Delete------------------------------------");System.out.println("------------------------------------常用方法:新建和删除------------------------------------");//创建文件File f1 = new File("F:\\wclass\\06Network\\resource\\txt\\hi.txt");if (!f1.exists()) {f1.createNewFile();System.out.println("创建成功...");}else{System.out.println("创建失败...");}//mkdir创建文件目录,目标目录不存在,上层目录存在File f2 = new File("F:\\wclass\\06Network\\resource\\txt\\IO01");boolean mkdir = f2.mkdir();if (mkdir){System.out.println("创建目录成功...");}else{System.out.println("创建目录失败...");}//mkdirs创建文件目录,上层目录不存在存在File f3 = new File("F:\\wclass\\06Network\\resource\\txt\\txt01");boolean mkdirs = f3.mkdirs();if (mkdirs){System.out.println("创建目录成功...");}else{System.out.println("创建目录失败...");}//删除文件或目录/*boolean delete = f1.delete();System.out.println(delete);boolean delete1 = f2.delete();System.out.println(delete1);boolean delete2 = f3.delete();System.out.println(delete2);*/}/*** 文件的获取* @throws IOException*/public static void filesAcquisition() throws IOException {System.out.println("------------------------------------CommonMethod04:Acquisition of files------------------------------------");System.out.println("------------------------------------常用方法:文件的获取------------------------------------");File file = new File("F:\\wclass\\06Network\\resource\\txt\\");//list()方法String[] list = file.list();for (String s : list) {System.out.println(s);}System.out.println("----------");//listFiles()方法File[] files = file.listFiles();for (File f : files) {System.out.println(f.toString());}}/*** 重命名文件* @throws IOException*/public static void renameFile() throws IOException {System.out.println("------------------------------------CommonMethod05:rename file------------------------------------");System.out.println("------------------------------------常用方法:重命名文件------------------------------------");File file1 = new File("F:\\wclass\\06Network\\resource\\txt\\inf.txt");File file2 = new File("F:\\wclass\\06Network\\resource\\txt\\hello.txt");boolean renameTo = file1.renameTo(file2);System.out.println(renameTo);}/*** 学会创建File对象定位操作系统的文件* @throws IOException*/public static void positionFile() throws IOException {System.out.println("------------------------------------FileUseExercise01------------------------------------");System.out.println("------------------------------------文件使用练习:学会创建File对象定位操作系统的文件------------------------------------");// 1、创建File对象(指定了文件的路径)// 路径写法: F:\resources\wclass.jpeg//          F:/resources/wclass.jpeg//          File.separator// File f = new File("F:\\resources\\xueshan.jpeg");// File f = new File("F:/resources/xueshan.jpeg");File f = new File("D:" + File.separator+"resources"+ File.separator +"wclass.jpeg");long size = f.length(); // 是文件的字节大小System.out.println(size);// 2、File创建对象,支持绝对路径 支持相对路径(重点)File f1 = new File("D:\\resources\\beauty.jpeg"); // 绝对路径System.out.println(f1.length());// 相对路径:一般定位模块中的文件的。 相对到工程下!!File f2 = new File("src/data.txt");System.out.println(f2.length());// 3、File创建对象 ,可以是文件也可以是文件夹File f3 = new File("D:\\resources");System.out.println(f3.exists()); // 判断这个路径是否存在,这个文件夹存在否}/*** File类的获取功能的API* @throws IOException*/public static void getFunctionsAPI() throws IOException {System.out.println("------------------------------------FileUseExercise02------------------------------------");System.out.println("------------------------------------文件使用练习:File类的获取功能的API------------------------------------");// 1.绝对路径创建一个文件对象File f1 = new File("F:/wclass/06Network/resource/wclass.jpeg");// a.获取它的绝对路径。System.out.println(f1.getAbsolutePath());// b.获取文件定义的时候使用的路径。System.out.println(f1.getPath());// c.获取文件的名称:带后缀。System.out.println(f1.getName());// d.获取文件的大小:字节个数。System.out.println(f1.length()); // 字节大小// e.获取文件的最后修改时间long time = f1.lastModified();System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));// f、判断文件是文件还是文件夹System.out.println(f1.isFile()); // trueSystem.out.println(f1.isDirectory()); // falseSystem.out.println("-------------------------");File f2 = new File("File\\src\\data.txt");// a.获取它的绝对路径。System.out.println(f2.getAbsolutePath());// b.获取文件定义的时候使用的路径。System.out.println(f2.getPath());// c.获取文件的名称:带后缀。System.out.println(f2.getName());// d.获取文件的大小:字节个数。System.out.println(f2.length()); // 字节大小// e.获取文件的最后修改时间long time1 = f2.lastModified();System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time1));// f、判断文件是文件还是文件夹System.out.println(f2.isFile()); // trueSystem.out.println(f2.isDirectory()); // falseSystem.out.println(f2.exists()); // trueFile file = new File("D:/");System.out.println(file.isFile()); // falseSystem.out.println(file.isDirectory()); // trueSystem.out.println(file.exists()); // trueFile file1 = new File("D:/aaa");System.out.println(file1.isFile()); // falseSystem.out.println(file1.isDirectory()); // falseSystem.out.println(file1.exists()); // false}/*** File类的创建和删除的方法* @throws IOException*/public static void FileCreateAndDelete() throws IOException {System.out.println("------------------------------------FileUseExercise03------------------------------------");System.out.println("------------------------------------文件使用练习:File类的创建和删除的方法------------------------------------");File f = new File("File\\src\\data.txt");// a.创建新文件,创建成功返回true ,反之 ,不需要这个,以后文件写出去的时候都会自动创建System.out.println(f.createNewFile());File f1 = new File("File\\src\\data02.txt");System.out.println(f1.createNewFile()); // (几乎不用的,因为以后文件都是自动创建的!)// b.mkdir创建一级目录File f2 = new File("F:/wclass/06Network/resource/aaa");System.out.println(f2.mkdir());// c.mkdirs创建多级目录(重点)File f3 = new File("F:/wclass/06Network/resource/ccc/ddd/eee/ffff");// System.out.println(f3.mkdir());System.out.println(f3.mkdirs()); // 支持多级创建// d.删除文件或者空文件夹System.out.println(f1.delete());File f4 = new File("F:/wclass/06Network/resource/wclass.jpeg");System.out.println(f4.delete()); // 占用一样可以删除// 只能删除空文件夹,不能删除非空文件夹.File f5 = new File("F:/wclass/06Network/resource/aaa");System.out.println(f5.delete());}/*** File针对目录的遍历* @throws IOException*/public static void traversingDirectories() throws IOException {System.out.println("------------------------------------FileUseExercise04------------------------------------");System.out.println("------------------------------------文件使用练习:File针对目录的遍历------------------------------------");// 1、定位一个目录File f1 = new File("F:/wclass/06Network/resource");String[] names = f1.list();for (String name : names) {System.out.println(name);}// 2.一级文件对象// 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)File[] files = f1.listFiles();for (File f : files) {System.out.println(f.getAbsolutePath());}// 注意事项File dir = new File("/wclass/06Network/resource/txt");File[] files1 = dir.listFiles();System.out.println(Arrays.toString(files1));}/*** 去D盘判断搜索某个文件* @param dir* @param fileName* @throws IOException*/public static void searchFile(File dir,String fileName) throws IOException {System.out.println("------------------------------------FileUseExercise05------------------------------------");System.out.println("------------------------------------文件使用练习:去D盘判断搜索某个文件------------------------------------");// 3、判断dir是否是目录if(dir != null && dir.isDirectory()){// 可以找了// 4、提取当前目录下的一级文件对象File[] files = dir.listFiles(); // null  []// 5、判断是否存在一级文件对象,存在才可以遍历if(files != null && files.length > 0) {for (File file : files) {// 6、判断当前遍历的一级文件对象是文件 还是 目录if(file.isFile()){// 7、是不是咱们要找的,是把其路径输出即可if(file.getName().contains(fileName)){System.out.println("找到了:" + file.getAbsolutePath());// 启动它。try {Runtime r = Runtime.getRuntime();r.exec(file.getAbsolutePath());} catch (IOException e) {e.printStackTrace();}}}else {// 8、是文件夹,需要继续递归寻找searchFile(file, fileName);}}}}else {System.out.println("对不起,当前搜索的位置不是文件夹!");}}/*** 删除文件夹,无所谓里面是否有内容,都可以删除* @param dir* @throws IOException*/public static void deleteDir(File dir) throws IOException {System.out.println("------------------------------------FileUseExercise06------------------------------------");System.out.println("------------------------------------文件使用练习:删除非空文件夹------------------------------------");// 1、判断dir存在且是文件夹if(dir != null && dir.exists() && dir.isDirectory()){// 2、提取一级文件对象。File[] files = dir.listFiles();// 3、判断是否存在一级文件对象,存在则遍历全部的一级文件对象去删除if(files != null && files.length > 0){// 里面有内容for (File file : files) {// 4、判断file是文件还是文件夹,文件直接删除if(file.isFile()){file.delete();}else {// 递归删除deleteDir(file);}}}// 删除自己dir.delete();}}}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring ai 入门 之 结构化输出 - 把大模型llm返回的内容转换成java bean

目录 ​编辑 将AI非结构化文本转换为特定格式数据的应用场景说明 Spring AI 介绍 :为Java开发者打造的AI应用开发框架 Qwen 介绍 : 一个国内领先的开源大模型 Spring AI Alibaba框架介绍 : 一个国内最好的spring ai实现 使用spring ai …

文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题

三、对引理 24.10 的证明进行改善,使其可以处理最短路径权重为 ∞ ∞ ∞ 和 − ∞ -∞ −∞ 的情况。引理 24.10(三角不等式)的内容是:设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图,其权重函数由 w : E → R w:E→R w:E→R 给出&…

漫途焊机安全生产监管方案,提升安全生产管理水平!

随着智能制造时代的到来,企业安全生产管理的重要性日益凸显。特别是在现代工厂中,焊机的安全生产监管成为了一个不容忽视的重要环节。传统的焊机安全生产监管方式存在诸多不足,如人工巡检频率低、数据延迟、安全隐患发现不及时等问题。因此&a…

csp2024T3

题目大意:对于每个数而言,可以将其染成红或蓝,对于每一个数,定义其贡献为,当且仅当这个数最近的同色数与其相等,否则其贡献为0,求最大贡献和。 思路:考虑dp 1.考场20多分钟想的奇怪…

十六届蓝桥杯嵌入式资料 看这个就够了(附CSDN开源程序)

蓝桥杯嵌入式终极模板,简单配置,功能全面 一小时玩转蓝桥杯嵌入式开发版 除按键和 LED 其余模块都来自官方选手资料包 代码简洁工整,参数,函数体分模块,有非常详细的注释,初始化由 cubemx 生成 &#xff08…

【测试工具】Fastbot 客户端稳定性测试

背景 做这个主要为了发版之前提前发现崩溃,风险前置。适合客户端很重的业务。 优点:你不改动也能用, 维护成本不高。 缺点:容易进入H5页面无法返回,效果有限。 备注:我这边接手别人维护,公司…

苍穹外卖Bug集合

初始化后端项目运行出现以下问题 以上报错是因为maven和jdk版本不符合,需要将jdk改成17,mavne改成3.9.9

中国雕塑、

孙溟㠭浅析“印章” 印章又称“图章”,玺印起源商代,至少在春秋战国时已出现,因战国时代已普遍使用。 商玺 古玺是先秦印章的通称,秦始皇统一六国之后,皇帝用印称“璽(玺)”&…

Android App 技能在DuerOS的调试方法

温故知新,我们先回顾一下DuerOS的技能分类。根据不同的视角可以对DuerOS 目前支持的技能类型进行不同的分类,例如,从用户与技能的语音交互方式来看, 可以将技能分为这四种技能类型: L1技能:只支持语音的打开和关闭L2技…

Ghidra无头模式(自动化批处理执行重复性任务)

Ghidra无头模式(自动化批处理执行重复性任务) 与Ghidra GUI探索单个项目中的单个文件不同,Ghidra headless analyzer(Ghidra无头分析器)更加适合批处理和用脚本控制Ghidra。 (一)启动analyzeHea…

ES海量数据插入如何优化性能?

2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …

el-date-picker日期选择器动态设置日期

需求&#xff1a;选择开始时间&#xff0c;或者在开始时间已存在的情况下&#xff1b;结束时间下拉日期选择框展示从开始日期展示&#xff1b;而不是当前日期&#xff0c;并且结束时间下拉框日期要禁用开始时间之前的日期。 <el-form-item label"开始时间" prop&q…

web实操2——idea创建普通web项目

创建项目 就是普通的java项目&#xff0c;项目右键add framework support&#xff08;添加框架支持&#xff09;,然后点击Web Application&#xff08;web应用程序&#xff09;&#xff0c;然后点击OK。即可。 文件下就会多一个web文件夹&#xff0c;里面是WEB-INF文件夹&…

ES跟Kafka集成

配合流程 1. Kafka作为分布式流处理平台&#xff0c;能够实时收集和处理不同数据源的数据流&#xff1b; 2. 通过Kafka Connect或者Logstash等中间件&#xff0c;可以将Kafka中的数据流实时推送到Elasticsearch中&#xff1b; 3. Elasticsearch接收到数据后&#xff0c;会根据…

RT-Thread操作系统(2)

RT-Thread操作系统&#xff08;2&#xff09; 目录 RT-Thread操作系统&#xff08;2&#xff09; 设备驱动 IO设备模型框架 PIN设备&#xff08;控制LED灯&#xff09; 软件包开发 DHT11的使用 自动初始化机制 串口 LCD LVGL 连接阿里云和服务器 设备驱动 IO设备模…

多线程--简单模拟实现线程池并使用--Java

一、序言 阅读这篇博客之前建议先读多线程--线程池概念以及使用--Java-CSDN博客&#xff0c;里面有对线程池的详细介绍&#xff0c;这边就不过多赘述。 二、模拟实现固定线程数目的线程池 通过对线程池的理解&#xff0c;我们了解到线程池将我们需要执行的任务Runnable放在阻…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

mutable用法

mutable 关键字用于允许类的某个成员变量在 const 成员函数中被修改。通常&#xff0c;const 成员函数不能改变对象的任何成员变量&#xff0c;但将成员变量声明为 mutable 可以例外 class Hero { public:Hero():m_Hp(0), m_getHpCounter(0){}int getHp() const {m_getHpCounte…

map和set和pair

目录 一.序列式容器和关联式容器 一.set set类的介绍&#xff1a; Construct &#xff1a;set的初始化 insert&#xff1a;插入 ​编辑find&#xff1a;查找 erase&#xff1a;删除 set查找范围的函数&#xff1a;​编辑 二.map 2.1map介绍 2.2pair类型介绍 在map的i…

BEV数据集标注成本高?BEVPose:减少对标注数据依赖!

引言 本文提出了一个名为BEVPose的框架&#xff0c;通过利用自监督和传感器位姿信息&#xff0c;实现相机和激光雷达数据的多模态BEV表示对齐&#xff0c;显著减少了对标注数据的依赖。BEVPose在BEV地图分割任务中表现出色&#xff0c;能够超越全监督的方法&#xff0c;同时提升…