将File转化为MultipartFile:
无缝转换:将File转化为MultipartFile,轻松应对文件上传 - 知乎
我们经常会进行路径拼接,在路径拼接中因为操作系统的不同,可能出现 / 和 \ ,我们可以使用File.separator方法来拼接路径,跨平台运行。
【Java】如何获取文件的创建时间、更新时间_NICE波的技术博客_51CTO博客
转载1: File类
File
类是用来操作文件的类,但它不能操作文件中的数据。
public class File extends Object implements Serializable, Comparable<File>
File
类实现了Serializable
、 Comparable<File>
,说明它是支持序列化和排序的。
File类的构造方法
方法名 | 说明 |
---|---|
File(File parent, String child) | 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String pathname) | 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String parent, String child) | 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
File(URI uri) | 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
File类的常用方法
方法 | 说明 |
---|---|
createNewFile() | 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
delete() | 删除此抽象路径名表示的文件或目录。 |
exists() | 测试此抽象路径名表示的文件或目录是否存在。 |
getAbsoluteFile() | 返回此抽象路径名的绝对路径名形式。 |
getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串。 |
length() | 返回由此抽象路径名表示的文件的长度。 |
mkdir() | 创建此抽象路径名指定的目录。 |
File类使用实例
public class FileTest {
public static void main(String[] args) throws IOException {
File file = new File("C:/Mu/fileTest.txt");
// 判断文件是否存在
if (!file.exists()) {
// 不存在则创建
file.createNewFile();
}
System.out.println("文件的绝对路径:" + file.getAbsolutePath());
System.out.println("文件的大小:" + file.length());
// 刪除文件
file.delete();
}
}
转载2:
10.File 类
文件和目录路径名的抽象表示形式。一个 File 对象可以代表一个文件或目录
- 可以实现获取文件和目录属性等功能
- 可以实现对文件和目录的创建、删除等功能
常用方法有:
- createNewFile() //有则不创建 返回false,没有则创建 返回true
- delete() //删除成功 返回true ,失败返回false
- getAbsoluteFile() //返回绝对路径
- getPath() //返回相对路径
- getName() //返回文件名
- isFile() //是否为文件 boolean
- length //长度
- mkdir() //创建单层目录
- mkdirs() //创建多级目录
- delete() //只能删除空目录
- list() //返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
- listFiles() //返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件和目录。
File 不能访问文件内容
10.1File 类操作文件
10.2File 类操作目录
package dead;
import java.io.File;
import java.io.IOException;
public class TestFile {
//使用file类去操纵文件
public static void main(String[] args) throws IOException {
//创建File类的文件
File f1=new File("D:/a1.txt");//绝对路径
File f2=new File("D:\\a2.txt");
File f3=new File("a.txt");//相对路径
File f5=new File("D:\\test");//目录
File f4=new File(f5,"a4.txt");
File f6=new File("D:"+File.separator+"a5.txt");
/**
* File操作文件的相关方法
*/
//System.out.println(f1.createNewFile());
System.out.println(f1.delete());//直接从磁盘上删除
System.out.println(f1.exists());
System.out.println("绝对路径:"+f3.getAbsolutePath());
System.out.println("相对路径:"+f3.getPath());
System.out.println(f3); //相对路径
System.out.println("是否是文件"+f3.isFile());
System.out.println("是否是文件"+f5.isFile());
System.out.println("文件中内容的长度"+f3.length());
}
}
package com.bjsxt.file;
import java.io.File;
public class TestDirectory {
public static void main(String[] args) {
//创建File类的对象
File f=new File("D:"+File.separator+"test");
f.mkdir(); //用于创建目录 ,单层目录
System.out.println("目录是否存在"+f.exists());
System.out.println("是目录还是文件:"+f.isDirectory());
System.out.println("是目录还是文件:"+f.isFile());
File f2=new File("D:\\aa\\bb\\cc");
f2.mkdirs(); //用于创建目录,多层目录
f.delete();
File parent=f2.getParentFile(); //获取cc目录的父级目录
System.out.println(parent);
parent.delete(); //delete删除目录时,只允许删除空目录
f2.delete();//删除cc
parent.delete();//删除bb
File f3=new File("D:\\");
String [] strFile=f3.list();
System.out.println(strFile.length); //数组中元素的个数
for(String s:strFile){
System.out.println(s);
}
System.out.println("\n--------------------------------\n");
File [] flist=f3.listFiles();
for(File file:flist){
System.out.println(file);
}
}
}
11.使用递归算法遍历目录结构和树结构
编写一个程序:以树状结构展现特定的文件夹及其子文件
(夹)(使用递归来做)
package Testfile;
import java.io.File;
public class TestFile {
public static void main(String[] args) {
File f=new File("E:\\eclipse");
printFile(f,0);
}
public static void printFile(File file,int level){
//打印树状结构的层次关系
for(int i=0;i<level;i++){
System.out.print("-");
}
//输出目录或者文件的名称
System.out.println(file.getName());
if(file.isDirectory()){//判断file对象是否是目录
File[] listFiles = file.listFiles();
for(File temp:listFiles){
//自己调用自己
printFile(temp,level+1);
}
}
}
}
转载3:
/** * 获取某个文件夹下的所有文件 * * @param fileNameList 存放文件名称的list * @param path 文件夹的路径 * @return */ public static void getAllFileName(String path,ArrayList<String> fileNameList) { //ArrayList<String> files = new ArrayList<String>(); boolean flag = false; File file = new File(path); File[] tempList = file.listFiles(); for (int i = 0; i < tempList.length; i++) { if (tempList[i].isFile()) { // System.out.println("文 件:" + tempList[i]); //fileNameList.add(tempList[i].toString()); fileNameList.add(tempList[i].getName()); } if (tempList[i].isDirectory()) { // System.out.println("文件夹:" + tempList[i]); getAllFileName(tempList[i].getAbsolutePath(),fileNameList); } } return; }
附:java文件常用操作:
1.获取File路径和检测状态:
1)操作File路径和名称:
File getAbsoluteFile() :获取绝对路径
String getAbsolutePath():获取绝对路径
String getPath() :获取文件路径
String getName() :获取文件名称
File getParentFile():获取上级目录文件
String getParent() :获取上级目录路径
2)检测File状态的方法:
boolean canExecute() :判断是否是可执行文件
boolean canRead() :判断该文件是否可读
boolean canWrite():判断该文件是否可写
boolean isHidden():判断该文件是否是隐藏文件
long lastModified():判断该文件的最后修改时间
long length():获取该文件的长度大小(单位字节)
2.File类中方法
1)文件操作:
boolean isFile() :是否是文件
boolean createNewFile() :创建新的文件
static File createTempFile(String prefix, String suffix) :创建临时文件
boolean delete() :删除文件
void deleteOnExit() :在JVM停止时删除文件
boolean exists():判断文件是否存在
boolean renameTo(File dest) :重新修改名称
eg:修改文件后缀名:
//filePath是txt文件
String filePath = path + File.separator + recoverFile.getOriginalFilename();
//修改文件名后缀
replaceTxt(filePath,"sql");
String fileSqlPath = path + File.separator + recoverFile.getOriginalFilename().substring(0,recoverFile.getOriginalFilename().indexOf("txt"))+"sql";
log.info("fileSqlPath:{}",fileSqlPath);
private static void replaceTxt(String path,String modifyAfter){
File file = new File(path);
String name = file.getName();
if (name.endsWith("txt")){
file.renameTo(new File(file.getParent() + "/" + name.substring(0, name.indexOf("txt")) + modifyAfter));
}
}
2)目录操作
boolean isDirectory() :判断是否是目录
boolean mkdir() :创建当前目录
boolean mkdirs() :创建当前目录和上级目录
String[] list() :列出所有的文件名
File[] listFiles() :列出所有文件对象
static File[] listRoots() :列出系统盘符
递归获取文件夹的大小:(实际获取文件夹大小的工具类很多,apache,hutu工具包等)
package com;
import java.util.ArrayList;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.io.RandomAccessFile;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Scanner;
import java.util.Vector;
import com.bean.Student;
public class DIGUI {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//extracted_8();
File dir =getDir();
System.out.println(getFileLength(dir));
}
public static long getFileLength(File dir) {
long len = 0;
File[] subFile =dir.listFiles();
for (File file : subFile) {
if(file.isFile()) {
len = len+file.length();
}else {
len=len+getFileLength(file);
}
}
return len;
}
public static File getDir() {
Scanner sc =new Scanner(System.in);
while(true) {
String line = sc.nextLine();
File dir =new File(line);
if(!dir.exists()) {
System.out.println("路基不存在");
}else if(dir.isFile()) {
System.out.println("是文件");
}else {
return dir;
}
}
}