Java中File文件操作类的基础用法
作者:MAGIC_JSS 发布时间:2022-09-28 14:37:03
前言
众所周知Java提供File类,让我们对文件进行操作,下面就来简单整理了一下File类的用法。 话不多说了,来一起看看详细的介绍吧
1.基本概念
File:文件和目录路径名的抽象表示形式,代表文件或者文件夹。
2.构造方法
// 根据parent抽象路径名和child路径名字符串创建一个新File实例
File(File parent, String child)
// 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
File(String pathname)
// 根据parent路径名字符串和child路径名字符串创建一个新File实例
File(String parent, String child)
// 通过将给定的file:URI转换为一个抽象路径名来创建一个新的File实例
File(URI uri)
3.常用方法
(1).创建功能
// 创建此抽象路径名指定的目录
boolean mkdir()
// 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
boolean mkdirs()
// 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
boolean createNewFile()
// 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称
static File createTempFile(String prefix, String suffix)
// 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称
static File createTempFile(String prefix, String suffix, File directory)
// 构造方法一
File file1 = new File("f://file1");
// 构造方法二
File file2 = new File("f://file1", "file2");
// 构造方法三
File file3 = new File(file2, "file3.txt");
// 创建目录并返回是否创建成功,如果目录存在则返回false
boolean b1 = file1.mkdir();
System.out.println(b1);// true
// 创建目录
boolean b2 = file2.mkdir();
System.out.println(b2);// true
// 创建文件
// 在F盘下创建/file1/file2/file3.txt文件
boolean b3 = file3.createNewFile();
System.out.println(b3);// true
// 创建空文件并指定前缀和后缀
// 在F盘下创建/file1/file2/file4.....exe文件
File.createTempFile("file4", ".exe", file2);
注:三种构造方法效果是等同的,没有本质区别;创建目录mkdir()、mkdirs()方法,mkdirs()方法创建目录时,如果待创建目录的上几级目录不存在则一并创建,mkdir()则只能创建单级目录。
(2).删除功能
// 删除此抽象路径名表示的文件或目录
boolean delete()
//删除目录
System.out.println(file1.delete()); // false
//删除文件
System.out.println(file3.delete());// true
注:删除操作时,删除的是目录,则必须保证是空目录。
(3).判断功能
// 测试此抽象路径名表示的文件或目录是否存在
boolean exists()
// 测试此抽象路径名表示的文件是否是一个目录
boolean isDirectory()
// 测试此抽象路径名表示的文件是否是一个标准文件
boolean isFile()
// 测试此抽象路径名指定的文件是否是一个隐藏文件
boolean isHidden()
// 测试应用程序是否可以读取此抽象路径名表示的文件
boolean canRead()
// 测试应用程序是否可以修改此抽象路径名表示的文件
boolean canWrite()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判断是否存在
if (!file.exists()) {
// 创建目录
file.mkdir();
}
if (file2.exists()) {
// 创建文件
file2.createNewFile();
}
// 判断是否是目录
System.out.println(file.isDirectory());// true
// 判断是否是文件
System.out.println(file.isFile());// false
System.out.println(file2.isDirectory());// false
System.out.println(file2.isFile());// true
System.out.println(file2.isHidden());// false
// 判断是否是隐藏的
System.out.println(file2.isHidden());// false
// 判断是否可读
System.out.println(file2.canRead());// true
// 判断是否可写
System.out.println(file2.canWrite());// true
注:可以自主修改文件可读性,查看不同输出。
(4).获取功能
(1).基本获取功能
// 返回由此抽象路径名表示的文件或目录的名称
String getName()
// 返回此抽象路径名的绝对路径名形式
File getAbsoluteFile()
// 返回此抽象路径名的绝对路径名字符串
String getAbsolutePath()
// 将此抽象路径名转换为一个路径名字符串
String getPath()
// 返回此抽象路径名表示的文件最后一次被修改的时间
long lastModified()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判断文件或目录是否存在
if (!file.exists()) {
// 不存在则创建
file.mkdir();
}
if (file2.exists()) {
// 创建文件
file2.createNewFile();
}
//获取文件名或者目录名
System.out.println(file2.getName());// blog.txt
//获取文件或目录的绝对路径
System.out.println(file2.getAbsolutePath());// F:\hello\blog.txt
//获取文件或目录的路径名(绝对路径或者相对路径)
System.out.println(file2.getPath());// F:\hello\blog.txt
//获取文件或目录修改的最后时间返回毫秒值
System.out.println(file2.lastModified());// 1463734158963
(2).迭代获取功能,过滤器功能
// 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
String[] list()
// 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录
String[] list(FilenameFilter filter)
// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
File[] listFiles()
// 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
File[] listFiles(FileFilter filter)
// 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
File[] listFiles(FilenameFilter filter)
图示:先看下F盘里面的东东
File file = new File("F://");
// 获取抽象路径名下的文件和目录
String[] s = file.list();
// 过滤文件或者目录名
String[] ss = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 返回以.png结尾的文件或者目录名
// 控制返回值判断是否添加到数组中
return name.endsWith(".png");
}
});
// 增强for输出
for (String string : s) {
System.out.print(string + " ");// $RECYCLE.BIN android4.0黑马 android视频......等等
}
// 增强for
for (String string : ss) {
System.out.print(string + " ");// ic_ptr_loading.png ic_ptr_pull.png ic_ptr_release.png
}
// 获取抽象路径名下的文件和目录对象
File[] files = file.listFiles();
// 获取抽象路径名下的文件和目录对象,添加文件过滤
File[] files2 = file.listFiles(new FileFilter() {
public boolean accept(File pathname) {
// 判断是否是隐藏目录
return (pathname.isDirectory()&&pathname.isHidden());
}
});
// 获取抽象路径名下的文件和目录对象,添加文件名过滤
File[] files3 = file.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 判断是否是以png结尾的文件
return (new File(dir, name).isFile())&&name.endsWith(".png");
}
});
for (File f : files) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN android4.0黑马 android视频......等等
System.out.println();
for (File f : files2) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN ghos
}
System.out.println();
for (File f : files3) {
System.out.print(f.getName());//ic_ptr_loading.pngic_ptr_pull.pngic_ptr_release.png
}
(5).重命名功能
// 重新命名此抽象路径名表示的文件
boolean renameTo(File dest)
// 重新命名此抽象路径名表示的文件
// boolean renameTo(File dest)
File file = new File("f://");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File f = files[i];
//判断是否是以.png结尾的文件
if (f.isFile() && f.getName().endsWith(".png")) {
// 更改文件名,renameTo()接收File对象 ,这里该对象并未指定盘符
boolean b = f.renameTo(new File("pic" + i + ".png"));
System.out.println(b);
// true
// true
// true
}
}
图示:
注:更改文件或目录名时,renameTo()方法参数对象如果不指定盘的话,默认会将文件剪切到项目目录下(由上面截图可以看到);指定盘符的话会根据指定位置剪切到该位置。renameTo()方法相当于剪切加重命名。
注:更多方法查看API
来源:https://blog.csdn.net/magic_jss/article/details/51472205


猜你喜欢
- 使用淘宝ip地址库的api查询ip地址信息。TaobaoIPHelper.csusing System;using System.Coll
- 在C/C++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点调试,这非常方便。但是我们如果编译好的动态库so,想要跟踪下其
- 本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:一、环境:主机:WIN8开发环境:Android
- Excelapache 为 java开发者们提供了一套excel表格读写的工具:POI ,对于一个小白来说每次读写使用POI需要写一套复杂的
- 本文实例讲述了Android实现的简单蓝牙程序。分享给大家供大家参考,具体如下:我将在这篇文章中介绍了的Android蓝牙程序。这个程序就是
- 本文为大家分享了Tablayout简单的使用方法,供大家参考,具体内容如下一、TabLayout普通用法在项目中使用viewpager的时候
- Maven使用说明及规范此文档主要说明Maven的基础使用方式,以及在使用过程过程中需要遵守哪些默认的准则。我们工作中会经常写maven的配
- 在上周发布的 TienChin 项目视频中,我和大家一共梳理了六种幂等性解决方案,接口幂等性处理算是一个非常常见的需求了,我们在很多项目中其
- 一:Java创建线程方式继承Thread类或者实现Runnable接口。但是Runnable 的 run() 方法是不带返回值的,那如果我们
- mybatis-spring:@MapperScan注解在demo: springboot+mybatis的示例中,dao层接口使用了注解@
- 今天群里有人问了关于仿京东App分类页面的实现,而我之前正好查过这方面的资料,手上正好有一个demo,正好分享给大家看看,个人觉得效果棒棒哒
- spring缓存cache的使用在spring配置文件中添加schema和spring对缓存注解的支持:<?xml version=&
- 前言Zookeeper的通过快照日志和事务日志将内存信息保存下来,记录下来每次请求的具体信息。尤其是其事务日志,每次处理事务请求时都需要将其
- 本文实例讲述了C#实现导出List数据到xml文件的方法。分享给大家供大家参考,具体如下:C#导出List数据到xml文件,这里主要用到的是
- SpringBoot版本2.2.4.RELEASE。【1】SpringBoot接收到请求① springboot接收到一个请求返回json格
- 这里合并用到了一个itext的包。使用maven直接导入依赖即可。<dependency> <g
- [DllImport("User32.dll", CharSet = CharSet.Auto)]  
- 一般情况下,Redis Client端发出一个请求后,通常会阻塞并等待Redis服务端处理,Redis服务端处理完后请求命令后会将结果通过响
- 最近在公司的功能需求中,需要实现可以签到的日历,签到后在签到过的日期做标志。本功能参考了网上一些大神的日历控件,在此基础上进行修改,已满足本
- 使用SwingWorker线程模式谨慎地使用并发机制对Swing开发人员来说非常重要。一个好的Swing程序使用并发机制来创建不会失去响应的