【Java文件流】管理文件和文件夹:File类

PDFRead-开源 PDFRead 是一种用于转换 PDF 和 DJVU 文档以便在电子书设备上阅读的工具。 它通过从每个页面创建一个图像,增强图像,然后以特定于设备的格式整理图像来实现这一点。 立即下载

Java中不像C、C++那样设有专门的文件打开、关闭、跳转等方式,直接交给File类管理,开放几个方法,直接操作文件和文件夹。这十分利于新手入门。


File类的功能:

  1. 将操作系统中的文件、目录(文件夹)、路径,封装成File对象;
  2. 提供操作以上三种的方法函数;

方法

Java的API上都有以下的所讲方法。可以直接看API学习,也可以看别人写的文章学习。我的这篇文件的所讲述相关方法,首先是基于API,将其简略化,再辅助代码,更利于新手学习,以及对我以后复习时使用。

构造方法

 File(File 父文件夹,String 文件名)
 File(String 文件绝对路径)
 File(String 父文件夹,String 文件名)

三种构造方法的使用

import java.io.File;

public class Main {
	public static void main(String[] args) {
		function();
	}
	public static void function(){
		//1. File(String pathname) 把String字符串构成一个File对象,不检测这个路径是否合法
		File file01 = new File("D:\\test"); //第一个'\'是转移字符,第二个'\'是路径分隔符;
		System.out.println(file01); //输出:D:\test

		//2. File(File parent, String child)
		File parent = new File("D:\\test\\");
		File file02 = new File(parent,"a.txt");
		System.out.println(file02); //输出:D:\test\a.txt
		
		//3. File(String parent, String child)
		String pp = "D:\\test\\";
		File file03 = new File(pp,"b.txt");
		System.out.println(file03); //输出:D:\test\b.txt
	}
}

路径问题

  • 绝对路径: 该文件在硬盘上的完整路径。绝对路径一般都是以盘符开头的。
  • 相对路径: 相对路径就是资源文件相对于当前程序所在的路径。“.”当前路径;“…”上一级路径;

注意: 如果程序当前所在的路径与资源文件不是在同一个盘下面,是没法写相对路径的。

File file = new File(".");
System.out.println("当前路径是:"+ file.getAbsolutePath()); 	//获取当前的绝对路径

目录分隔符:

  1. 在windows机器上的目录分隔符是 \ ,在Linux机器上的目录分隔符是/ .
  2. 在windows上面\ 与 / 都可以使用作为目录分隔符。 而且,如果写/ 的时候只需要写一个即可。
  3. File中的分割符:File.pathSeparator:返回路径的分割符(在配置环境变量时各个Path路径的分割)。File.separator:返回目录名称的风格符 (各级目录之间的分割)。

创建文件、文件夹方法

使用方法:
由File对象直接调用

  1. boolean createNewFile():在new File()时里面的参数指定的位置创建一个空文件;创建的文件路径和文件名,由File对象的构造方法中给出;成功返回true,已存在就不创建,然后返回false(下同)。
  2. boolean mkdir():在new时指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
  3. boolean mkdirs():在指定位置创建目录,这会创建路径中所有不存在的目录。
  4. boolean renameTo(File dest):重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。

删除文件、文件夹方法

使用方法:
由File对象直接调用

1)delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除;成功返回true,失败返回false。当执行方法时就立即删除该文件。删除一个文件夹,这个文件夹下面不能有其他的文件和文件夹。
2)deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除;常用于删除程序运行后的临时文件的删除;

判断方法

  1. boolean exists() 判断文件或文件夹是否存在。
  2. boolean isFile() 是否是一个文件,如果不存在,则始终为false。
  3. boolean isDirectory() 是否是一个目录,如果不存在,则始终为false。
  4. boolean isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
  5. boolean isAbsolute() 是否为绝对路径名。

获取方法

文件相关:

  1. String getName() 获取文件或文件夹的名称,不包含上级路径。

  2. String getPath() 返回绝对路径,可以是相对路径,但是目录要指定

  3. String getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系

  4. File getAbsoluteFile()

  5. long length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。

  6. String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

  7. File getParentFile()

  8. long lastModified() 获取最后一次被修改的时间。

文件夹相关:

  1. static File[] listRoots():列出所有的根目录(Window中就是所有系统的盘符)
  2. String[] list():返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。返回一个String数组;
  3. String[] list(FilenameFilter filter):返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
  4. File[] listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
File[] files = file.listFiles(); // 把当前文件夹下面的所有子文件与子文件夹都使用了一个File对象描述,然后把这些File对象存储到一个FIle数组中返回
for(File fileItem : files){
	System.out.println("文件名:"+ fileItem.getName());
}
  1. File[] listFiles(FilenameFilter filter):返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

遍历

  • public String[] list() 获取当前目录下的所有一级文件名、文件夹
  • public File[] listFiles() 获取当前目录下的所有一级文件
//递归遍历目录
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Main {
    private static List<File> fileList = new ArrayList<>();
    private static List<File> dirList = new ArrayList<>();

    public static void main(String[] args) {
        File file = new File("C:/users/kyle/desktop");
        getAllFile(file);

        for(File e:fileList) {
            System.out.println(e.toPath());
        }
        for(File e:dirList) {
            System.out.println(e.toPath());
        }
    }

    /**
     * 方法:获取某个目录下的所有文件、文件夹
     * 输入:目录
     * 输出:fileList、dirList
     * 算法:
     *   1.exists()
     *   2.isFile() isDirectory()
     */
    public static void getAllFile(File dir) {
        if(dir.exists() && dir.isDirectory()) {
            File[] files = dir.listFiles(); //获取当级目录下的所有文件、文件夹
            if(files!=null && files.length>0) { //注意files的取值可能为null、可能为大小为0的数组
                for(File file:files) {
                    if(file.isFile()) { //是文件
                        fileList.add(file);
                    } else if(file.isDirectory()) { //是文件夹
                        dirList.add(file);
                        getAllFile(file);
                    }
                }
            }
        }
    }
}

文件过滤器

功能: 遍历目录时,可以根据需要,只获取满足条件的相关文件。
实现文件过滤器的相关接口

  1. FilenameFilter:实现此接口的类实例,可用于过滤文件名。
    方法摘要:boolean accept(File dir, String name); 测试指定文件是否应该包含在某一个文件列表中。
  2. FileFilter:用于抽象路径的过滤器。
    方法摘要boolean accept(File pathname); 测试指定的抽象路径名是否应该包含在路径列表中。

使用文件过滤器的步骤:

  1. 创建自定义的文件过滤器类,实现相关接口,重写抽象方法
  2. File对象调用listFiles方法,传入匿名的过滤器对象,实现过滤目的。
  3. 其中listFiles方法的作用有两个:调用accept方法和传入该方法所需的参数

简单示例:

import java.io.File;
import java.io.FileFilter;

class MyFilter implements FileFilter {
	@Override
	public boolean accept(File pathname) {
		//对路径进行判断,如果是java文件,返回true,不是java文件,返回false
		return pathname.getName().endsWith(".java");
	}
}

public class Main {
	public static void main(String[] args) {
		File file = new File("c:\\users\\KYLE\\desktop\\");
		File[] fileArr = file.listFiles(new MyFilter());
		for(File f : fileArr){
			System.out.println(f);
		}
	}
}

python-zstd:与Yann Collet ZSTD压缩库的简单python绑定 python-zstd 与Yann Collet ZSTD压缩库的简单python绑定 Zstd (Zstandard的缩写)是一种新的无损压缩算法, 可以为您的标准压缩需求提供良好的压缩率和速度。 “标准”转换为日常情况,既不寻求最高可能的比率(LZMA和ZPAQ涵盖),也没有极速(LZ4涵盖)。 它是作为BSD许可包提供的,托管在。 警告!!! 如果您设置了1.0.0.99.1版本,请手动将其删除以进行更新。 PIP匹配版本字符串,而不是数字元组。 由1.0.0.99.1之前的版本生成的结果无论如何与原始Zstd不兼容。 它会生成自定义标头,并且只能由zstd python模块读取。 从1.0.0.99.1版开始,它使用标准Zstd输出,未经修改。 为了防止数据丢失,现在有两个函数: `compress_old`和`decompress_old` 。 它们的工作方式与1 立即下载

相关推荐

pyzstd-0.14.1-cp36-cp36m-win_amd64.whl.zip

pyzstd-0.14.1-cp36-cp36m-win_amd64.whl.zip

PDFgui安装问题

PDFgui is a convenient and easy to use graphical front end for the PDFfit2 refinement program. 但是我测试的会报错。 试了更高版本的,也有错误,虽然不一样。所以用3.10就好。

qq_20563997的博客 805

手把手教你用Matlab实现Copula函数:从理论到代码的完整指南

本文提供了一份在MATLAB中实现Copula函数的完整实战指南。从理解Sklar定理和常见Copula家族(如高斯、t、Clayton)的核心概念出发,详细讲解了数据预处理、边缘分布拟合、概率积分变换等关键步骤。通过具体代码示例,手把手演示了Copula模型的拟合、评估、蒙特卡洛模拟,并进阶应用于金融风险度量(如VaR计算)和条件分布分析,帮助读者掌握这一强大的多变量依赖建模工具。

y9z0a1b的博客 953

字符串压缩(一)之ZSTD

从性能执行结果来看,zstd的压缩与解压性能表现比较勉强,我认为zstd在鱼(性能)和熊掌(压缩比)之间更偏向熊掌一些,不过对一些性能要求不太高的,但是要高压缩比的场景是比较符合的。需要说明的是压缩性能与待压缩文本的长度、字符内容也是有关系的。从结果可以发现,压缩之前的peppa pig文本长度为1827,压缩后的文本长度为759,压缩率为2.4,解压后的长度与压缩前相等。本篇分享了zstd压缩与解压缩使用的基本方法,对压缩与解压的性能进行了摸底,最后探索了zstd多线程压缩的使用方法。

jh035512的博客 4811

CST周期边界仿真:揭秘频率选择表面(FSS)单元设计全流程

本文详细解析了CST周期边界仿真在频率选择表面(FSS)单元设计中的应用全流程。从理论基础到工程实践,涵盖了求解器选择、几何建模、边界设置、端口优化等关键步骤,并提供了常见问题排查指南。通过CST仿真技术,工程师能够高效预测FSS的电磁特性,为实际应用提供可靠的设计依据。

weixin_30571465的博客 357

FPGA上的YOLOv8加速实现:从Verilog到高层综合

YOLOv8 采用了更高效的C2f模块与轻量化Backbone结构,模型特征包括:结构紧凑、检测头融合高低层特征;支持Anchor-free检测机制;支持INT8、FP16低精度推理;计算密度高,适合FPGA并行优化。

2501_93174773的博客 917

Python zstd文本压缩代码实践

本文介绍如何用 Python 的zstd库实现压缩算法。

日常学习与专研的记录 2127

小程序选项卡以及swiper套用(跨页面)

选项卡tab和swpier之间的套用 其实我之前写过一篇选项卡的切换demo,大家阔以参考一下 小程序多个选项卡切换 那今天写这个demo呢,是因为项目需求,所以仅供参考。 我是拿到了home.wxml的数组下标, 通过url传参的方式去将这个id传到下一个页面, 下一个页面接收以后再将id赋值给对应的tabI或者currentId(swiper 的下标) 实现上一个页面进来以后直接进入对应的页...

Rechal_Mei的博客 3597

zstd文件的创建与解压

zstd文件的创建与解压

zalois的博客 6507

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338

哈工大OS实验四——进程运行轨迹的跟踪与统计

进程运行轨迹的跟踪与统计 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出 CPU;当文件读写完毕以后,操作系统会在将其切换成就绪态,等待进程调度算法来调度该进程执行…… process.c解读 void cpuio_bound(int last, int cpu_

优快云-ych 1001

java文件io详解(File类+操作文件内容的字符字节流)

文件=>在硬盘上存储数据的方式.操作系统帮我们把硬盘的一些细节都封装起来了.程序猿只需要了解文件相关的接口即可.硬盘用来存储数据,和内存相比,硬盘的存储空间更大,访问速度更慢,成本更低,持久化存储不同的文件系统,管理文件的方式都是类似的通过目录–文件构成了“N叉树"树形结构~~站在操作系统的角度看待,目录也是文件.操作系统中的文件是一个更广义的概念,具体来说里面有很多种不同的类型.1.普通文件(通常见到的文件)2.目录文件(通常见到的文件夹)

weixin_63018754的博客 1035

用Obsidian搭建个人知识库:AI时代如何构建你的第二大脑

AI 时代,真正有价值的不只是获取知识,而是沉淀属于自己的知识体系。本文从 Obsidian 安装、目录设计、双向链接、插件推荐到 AI 联动、多端同步,手把手教你打造高效、可持续进化的个人知识库,让知识真正为你所用。🧠

XiaoqiangClub的博客 466

Java 中与文件和 IO 输出输入流的相关操作详解

Java 中与文件和 IO 输出输入流的相关操作的详细解析

m0_69438595的博客 236

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 991

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

字节流与字符流的详解,文件流,数据流

首先看一下File类的常用方法 •File类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录; •当创建一个文件对象后,就可以利用它来对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等等; 需要注意的是,File对象并不能直接对文件进行读/写操作,只能查看文件的属性; 方 法 原 型

qq_2896431151的博客 7742

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JAVA九--I/O

概念 就是程序读取数据的写入/写出操作,根据读取的方式可以分为,字节流和字符流。 字节流 InputStream/OutputStream 字符流 Reader/Writer 用处 1)流中的数据是单向的 2)只能从头到位读取一次 File文件流 是管理文件的一个类,可以实现打开关闭文件的操作,可以封装一个路径,或者新建一个文件路径。 输入输出流的前提是找到文件,所以先有文件流,后才有输入输出流。 ex:输入输出流的常见用法 package tedu.day12.i_o; import java.io.F

ritian123789的博客 135

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java文件操作与流处理

在计算机中,文件是用于存储数据的基本单位。它可以包含文本、图像、音频、视频或其他类型的数据。文件可以用于保存程序代码、用户数据、操作系统配置等内容。每个文件都有一个唯一的名称,通过这个名称可以在计算机系统中找到和访问文件。

qq_61635026的博客 1756

Java IO流(三)-- 文件的处理与随机访问

计算机程序运行时,数据都是保存在系统的内存中,由于关机时内存中的数据全部丢失,所以必须把那些需要长期保存的数据存放在磁盘文件中,需要时再从文件中读取。文件的处理文件夹是管理文件的特殊机制,同类文件保存在一个同一个文件夹下不仅可以简化文件管理,而且可以提高工作效率。Java语言不仅支持文件管理,还支持文件夹管理。在java.io包中定义一个File类,专门用来管理磁盘文件和文件夹,而不负责数据的输入输

枫之木落的博客 615

文件操作和IO

字节流:适用于所有文件(图片、音乐、文字等),精准操作字节。字符流:专注文字处理,自动处理编码,写文字文件更便捷。

2301_80176093的博客 680

JavaSE -- IO流

file类 绝对路径:是一个固定的路径,从盘符开始 相对路径:是相对于某个位置开始 路径分隔符: windows:\ unix:/ import jdk.nashorn.api.scripting.ScriptObjectMirror; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.Date; /** * 1. File类的一个对象,代表一个文件或一个文件目录(

default789的博客 731

3.13文件的IO操作

555

m0_72618437的博客 339

文件操作与IO(Input&Output)(JavaEE)

日常我们经常讲"硬盘"与"内存"搞混,这两者究竟有什么区别?从硬盘中读取数据和从内存中读取数据有什么区别?以及对应的读写操作,接下来就来探讨相关的问题。

多敲代码防脱发的博客 1371

android之File,Saving State,Preferences(二)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34291004的博客 172

Java 文件操作

package com.lakala.util; import org.apache.log4j.Logger; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter;  * Created with Inte

cjings的专栏 391

2025.2.24学习内容

IO流

m0_56991465的博客 1005
上一篇: 【Java异常】干净明了的Java“异常”机制详解
下一篇: 【Java文件流】我尝试用一文把“字节流”说清楚
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值