File文件操作类
背景:
在Java语言里面提供有对于文件操作系统的支持,而这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包里面,File类是唯一一个于文件本身操作(创建,删除,重命名等等)有关的类,而如果要想进行File类的操作,必须要提供有完整的路径,而后可以调用相应的方法进行处理。
1:File类的基本使用
2:使用File类创建一个文件夹(d:mldn.txt)
import java.io.File;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:\\mldn.txt");
if (file.exists()) {
file.delete();// 删除文件
} else { // 文件不存在
System.out.println(file.createNewFile()); // 创建新的文件
}
}
}
//true
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "mldn.txt");
if (file.exists()) {
file.delete();// 删除文件
} else { // 文件不存在
System.out.println(file.createNewFile()); // 创建新的文件
}
}
}
//true
2:File类操作深入
2,在使用File类进行文件处理的时候需要注意的是:程序->JVM->操作系统函数->文件处理;
所以在进行同一文件的反复删除或者创建的时候有可能会出现延迟的问题,所以这个时候做i好的方案是类别重名;
import java.io.File;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "hello" + File.separator + "demo" + File.separator + "message"
+ File.separator + "mldn.txt");
if (!file.getParentFile().exists()) { // 父路径不存在
file.getParentFile().mkdirs() ; // 创建父路径
}
if (file.exists()) {
file.delete();// 删除文件
} else { // 文件不存在
System.out.println(file.createNewFile()); // 创建新的文件
}
}
}
//true
3:获取文件信息
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
class MathUtil {
private MathUtil() {
}
public static double round(double num, int scale) {
return Math.round(Math.pow(10, scale) * num) / Math.pow(10, scale);
}
}
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "my.jpg");
System.out.println("文件是否可读:" + file.canRead());
System.out.println("文件是否可写:" + file.canWrite());
System.out.println("文件大小:" + MathUtil.round(file.length() / (double) 1024 / 1024, 2));
System.out.println(
"最后的修改时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
System.out.println("是目录吗?" + file.isDirectory());
System.out.println("是文件吗?" + file.isFile());
}
}
4:列出文件内容
import java.io.File;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator);
if (file.isDirectory()) { // 当前是一个目录
File result [] = file.listFiles() ; // 列出目录中的全部内容
for (int x = 0 ; x < result.length ; x ++) {
System.out.println(result[x]);
}
}
}
}
//运行结果
d:\$RECYCLE.BIN
d:\00MVC-EF-master
d:\2017.11.24
d:\2018.10.26
d:\2018.10.3 BAT不是梦
d:\2018.3.5杰哥分享的视频
d:\app
d:\BaiduNetdisk
d:\BaiduNetdiskDownload
d:\Baofeng
d:\BAT算法与数据结构
d:\C#学习笔记.docx
d:\CAJ
d:\Dict
d:\Eclipse
d:\Foxit Phantom
d:\Foxit Reader
d:\Git
d:\hello
d:\isual
d:\mldn.txt
d:\MyDownloads
d:\Oracle
d:\PADS3.19
d:\pagefile.sys
d:\Program Files
d:\Program Files (x86)
d:\ProgramData
d:\QLDownload
d:\qq
d:\QQBrowser
d:\qycache
d:\RAR
d:\SQL Server
d:\SQL Sever
d:\SQLServer2017Media
d:\StormMedia
d:\Sublime Text 3
d:\System Volume Information
d:\Typora
d:\Visual Studio
d:\WebApplication93
d:\Windows Kits
d:\winrar
d:\XMP
d:\大话数据库.pdf
d:\有道云笔记
d:\李铭师兄
d:\电池管理
d:\肖俊
5:File操作案例:列出指定目录中的全部文件
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator) ; // 是一个目录
listDir(file) ;
}
public static void listDir(File file) {
if (file.isDirectory()) { // 是一个目录
File results [] = file.listFiles() ; // 列出目录中的全部内容
if (results != null) {
for (int x = 0 ; x < results.length ; x ++) {
listDir(results[x]) ; // 继续依次判断
}
}
}
System.out.println(file); // 获得完整路径
}
}//运行结果如下图
**不要运行这个程序**
import java.io.File;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "mldnjava") ; // 是一个目录
listDir(file) ;
}
public static void listDir(File file) {
if (file.isDirectory()) { // 是一个目录
File results [] = file.listFiles() ; // 列出目录中的全部内容
if (results != null) {
for (int x = 0 ; x < results.length ; x ++) {
listDir(results[x]) ; // 继续依次判断
}
}
}
file.delete() ;
}
}
6:File操作案例:批量修改文件名称
import java.io.File;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "test") ; // 是一个目录
long start = System.currentTimeMillis() ;
renameDir(file) ;
long end = System.currentTimeMillis() ;
System.out.println("本次操作所花费的时间:" + (end - start));
}
public static void renameDir(File file) {
if (file.isDirectory()) { // 是一个目录
File results [] = file.listFiles() ; // 列出子目录中的内容
if (results != null) {
for (int x = 0 ; x < results.length ; x ++) {
renameDir(results[x]) ;
}
}
} else {
if (file.isFile()) { // 如果是文件则必须进行重命名
String fileName = null ;
if (file.getName().contains(".")) {
fileName = file.getName().substring(0,file.getName().lastIndexOf(".")) + ".txt" ;
} else {
fileName = file.getName() + ".txt" ;
}
File newFile = new File(file.getParentFile(),fileName) ; // 新的文件名称
file.renameTo(newFile) ; // 重命名
}
}
}
}
在面试的过程中经常会出现给你一个路径而后让你进行名称或文件的批量修改,那么就采用以上的代码结构即可。