Java-File类

将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;
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值